![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解JVM
文章平均质量分 81
java虚拟机原理
修小修
这个作者很懒,什么都没留下…
展开
-
深入理解JVM——HotSpot 垃圾回收算法细节实现
在赋值前的部分的写屏障叫作写前屏障,在赋值后的则叫作写后屏障。(3)增量更新破坏的是第一个条件,当黑色对象插入新的指向白色对象的引用关系时,就将这个新插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫描一次。(3)应用写屏障后,虚拟机就会为所有赋值操作生成相应的指令,一旦收集器在写屏障中增加了更新卡表操作,无论更新的是不是老年代对新生代对象的引用,每次只要对引用进行更新,就会产生额外的开销,不过这个开销与 Minor GC 时扫描整个老年代的代价相比还是低得多的。...原创 2022-08-30 20:25:22 · 310 阅读 · 0 评论 -
深入理解JVM——垃圾收集器
各收集器搭配关系:JDK9 之后取消了两款搭配组合 优点:简单而高效,是所有收集器里额外内存消耗最小的。对于单核处理器或处理器核心数较少的环境来说,Serial 收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。Serial 收集器对于运行在客户端模式下的虚拟机来说是一个很好的选择(其停顿时间对许多用户来说都是可以接受的)。 (1)实质上是 Serial 收集器的多线程并行版本。 (2)自 JDK9 开始取消了 ParNew 加 Serial Old 以及 Serial 加 C原创 2022-08-30 21:39:44 · 155 阅读 · 0 评论 -
深入理解JVM——GC中判断对象是否存活的算法
(1)在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆。(5)Java 虚拟机内部的引用,比如基本数据类型对应的 Class 对象,一些常驻的异常对象,还有系统类加载器。在对象中添加一个引用计数器,有地方引用它时计数器值就加 1,引用失效后计数器值就减 1。(4)在本地方法栈中 JNI(即通常所说的 Native 方法)引用的对象。(2)方法区中类静态属性引用的对象,譬如 Java 类的引用类型静态变量。(3)在方法区中常量引用的对象,譬如字符串常量池里的引用。...原创 2022-08-30 17:31:02 · 188 阅读 · 0 评论 -
深入理解JVM——内存分配与回收策略
如果允许,那会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试进行一次 Minor GC,尽管这次 Minor GC 是有风险的;(5)动态对象年龄判定:为了能更好地适应不同程序的内存状况,HotSpot 虚拟机并不是永远要求对象的年龄必须达到设定值才能晋升到老年代,如果在 Survivor 空间中相同年龄所有对象大小的总和大于 Survivor 空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代。而当复制对象时,大对象就意味着高额的内存复制开销。...原创 2022-08-30 21:43:34 · 189 阅读 · 0 评论 -
深入理解JVM——类加载机制
从概念上讲,这些变量所使用的内存都应当在方法区中进行分配,但是要注意方法区本身是一个逻辑上的区域,在 JDK7 及之前,HotSpot 使用永久代来实现方法区时,实现是完全符合这种逻辑概念的,但在 JDK8 及之后,类变量会随着 Class 对象一起存放于 Java 堆中,这时候“类变量在方法区”就完全是一种对逻辑概念的表述了。在加载过程中,由于元数据验证,字节码验证的需要,又可能触发其他相关类的加载动作,例如加载这个类的父类或实现的接口。此外,接口的实现类在初始化时也一样不会执行接口的()。原创 2022-09-05 13:13:32 · 377 阅读 · 0 评论 -
深入理解JVM——分代收集理论及垃圾收集算法
(3)HotSpot 虚拟机中关注吞吐量的 Parallel Scavenge 收集器是基于标记-整理算法的(如果跟标记-清除算法那样完全不考虑移动和整理存活对象的话,弥散于堆中的存活对象导致的空间碎片化问题就只能依赖更为复杂的内存分配器和内存访问器来解决,势必会直接影响应用程序的吞吐量),而关注延迟的 CMS 收集器则是基于标记-清除算法。(1)将可用的内存按容量分为大小相等的两块,每次只使用其中的一块,当这一块用完后就将还活着的对象复制到另一块上,然后再把已使用过的空间一次清理掉。...原创 2022-08-30 19:57:00 · 300 阅读 · 0 评论 -
深入理解JVM——了解JAVA运行时数据区
java虚拟机的运行时数据区原创 2022-08-15 16:50:11 · 168 阅读 · 0 评论 -
深入理解JVM——浅析HotSpot中的对象
jvm中的对象原创 2022-08-15 17:54:51 · 171 阅读 · 0 评论