![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 63
一个只会吹比的选手
这个作者很懒,什么都没留下…
展开
-
JVM 方法内联 逃逸分析
编译器优化技术原创 2022-03-22 17:52:45 · 764 阅读 · 1 评论 -
每日一篇JVM 之 生存还是死亡
1.生存还是死亡 通过可达性分析算法标记的不可达对象,也不是“非死不可”的。他是一个被标记的“缓刑”阶段,如果真正宣告一个对象死亡最少需要经历两次标记。当对象在进行可达性分析发现并没有与GC Roots相链接的引用链,那么他会被标记一次,随后进行一次筛选,筛选条件就是当前对象有没有重写finalize方法。如果该对象没有重写finalize方法或者虚拟机已经调用过这个方法则该对象会被视为“没有必要执行”。 当这个对象重写了finalize方法,则该对象会被放置在一个名为F...原创 2021-10-14 16:54:08 · 98 阅读 · 0 评论 -
每日一篇JVM之垃圾回收集
1.对象已死 在堆中存放着所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是要确定哪些对象还活着,哪些以及“死去”。 2.计数算法 何为引用算法? 在对象中添加一个引用计数器,当有一个地方引用当前对象,计数器值加1,当引用失效的时候计数器值减1;当计数器值为零的时候对象则就是不会被使用。 3.可达性分析算法 当前主流的程序语言的内存管理子系统都是通过可达性分析算法来判断对象是否存活。这个算法思路就是通过一系列称为“GC Roots”的根对象作为起始节点,根据这个起始节点的引用关系向原创 2021-10-13 16:12:46 · 48 阅读 · 0 评论 -
每日一片JVM之new关键字操作
1.对象的创建 java虚拟机遇到new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类符号的引用。并且检查当前了是否被加载,解析,初始化。如果没有,必须首先执行类加载过程。 类加载检查通过之后,虚拟机会给新生的对象进行分配内存。而对象所需内存大小是在类加载的时候可以确定的。 假设java堆中内存是绝对规整的,所有被使用的内存都被放在一边,空闲的内存放在另一边,中间放着一个指针作为分界点的指示器。所分配的内存就仅仅吧指针向空闲的那一部分挪动一段大小相等的距离,这种分配方式称为“指针碰撞原创 2021-10-12 17:45:53 · 306 阅读 · 0 评论 -
聊聊JVM自动内存管理 之运行时数据区域
1.JVM运行时数据区域 以下区域都拥有各自的用途,创建以及销毁的时间,有的区域会随着虚拟机启动而一直存在,有的是依赖用户线程的启动和结束而建立和销毁。 2. 程序计数器 程序计数器根据字面意思觉得类似于java中的++运算,其实不是。jvm虚拟机中的程序计数器是所执行字节码的行号指示器。字节码解释器就是根据这个计数器的值来取下一条需要执行的字节码质量,来控制程序的流程,分之,循环,跳转,异常处理等基础功能。 切记程序计数器是线程私有的,每一条线程都有独立的程序计数器他们互不...原创 2021-10-11 17:50:47 · 77 阅读 · 0 评论