
jvm
文章平均质量分 60
失败的路有很多条,成功的路只有一条:勤奋的认真
不积硅步
纸上得来终觉浅,绝知此事要躬行!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
jvm的方法区
方法区存储类信息存储方法信息存储域信息运行时常量池静态变量JIT即时编译后得到的代码缓存类信息判断是类还是接口类的全限定名类的父类的全限定名类的访问修饰符类的实现接口方法信息方法名方法的参数的数量和类型方法的返回值类型方法的访问修饰符方法的字节码、操作数栈、局部变量表及其大小域信息域(字段)的声明顺序域的名称、类型、修饰符等运行时常量池运行时常量池(Runtime Constant Pool),它是方法区的一部分。Class文件中除了有类的版本、原创 2022-04-15 10:10:46 · 980 阅读 · 0 评论 -
垃圾收集器和常见的垃圾回收算法
文章目录判断对象是否可回收算法引用垃圾回收算法垃圾回收器判断对象是否可回收算法java中的垃圾回收主要回收的就是对象,主要是对堆中的没有被引用的对象进行回收,常见的判断一个对象有没有被引用有两种算法:引用计数器法:对象被引用一次计数器加1,当计数器为0,说明对象没有被引用了可达性分析法:也叫跟搜索算法,以「GC Roots」的对象作为起始点,往下搜索,形成一个引用链,看看最后能否达到该对象引用根据对象的引用强弱,将对象分为下面几种:强引用: 通过new出来的对象,一般属于强引用软引用:原创 2022-04-15 09:55:11 · 232 阅读 · 0 评论 -
jvm中的堆
文章目录堆堆的结构堆的内存分配过程堆堆主要的作用是给对象分配空间并且存放对象的实例,同时堆是垃圾回收的主要区域,又被称为gc堆从垃圾回收的角度,堆被分为新生代(minor gc或者younggc)和老年代(major gc或者full gc)从内存分配的角度看,eden将会划分出一小块空间,用作本地线程分配缓冲区(tlab),每个线程都有自己的tlab,当对象比较小时,直接可以使用tlab给对象分配内存,如果tlab不够,考虑用eden分配,eden不够则直接进入老年代堆的结构堆分区主要是因原创 2022-04-13 11:22:29 · 314 阅读 · 0 评论 -
对象创建的过程
对象的创建过程一般我们遇到new的时候,就代表需要创建实例了,在创建实例之前会在运行时常量池查找是否已经存在这个类的符号引用了、如果这个类的符号引用被加载过,就可以直接使用了,如果没有则执行类加载过程新对象分配内存空间都知道对象是在堆中分配的内存空间,分配内存空间有两种方式:指针碰撞:假设堆中内存是绝对规整的,所有被使用过的内存都被放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离空闲列表:假设堆中内存不是原创 2022-04-12 11:20:03 · 335 阅读 · 0 评论 -
类加载过程
文章目录java运行过程类加载类加载器java运行过程java1.8之后使用元空间代替掉了本地方法区我们通常编写的是.java的源文件,通过编译器编译后,就会变成一个.class文件,也就是常说的javac编译生成.class文件,jvm是能识别.class文件,它帮我们做了.class文件到机器码文件的转换,相对于常见的高级语言到机器语言的转换,多了一个jvm,但就是因为jvm,jvm帮我们屏蔽掉了操作系统,使得java程序能够跨平台类加载类加载分为7个阶段,加载、验证、准备、解析、初始化、使原创 2022-04-12 10:20:47 · 449 阅读 · 0 评论