![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
走尔
这个作者很懒,什么都没留下…
展开
-
《HotSpot算法(二)安全点》
上一章我们提到,如果频繁的创建OopMap,会造成内存的极大开销。而的确,JVM并没有如此频繁的创建OopMap,而是在一个特定的位置,统一的生成。这个特定的位置我们称为安全点,安全点包含以下几种位置。1、方法调用结束后。2、循环跳出之后。3、抛出异常之后对于安全点而言,当线程进入安全点的时候,就可以收集到足够的GCRoot,可以进行垃圾回收。的确,jvm规定只有线程进入安全点之后,才允许进行垃圾回收!所以,安全点的设置很重要,如果太多,那垃圾回收就会过于频繁,加剧系统的原创 2021-10-19 11:49:53 · 119 阅读 · 0 评论 -
HotSpot算法(一)jvm的根节点枚举
我们都知道,HotSpot虚拟机判断对象是否存活的方法是——GCRoot可达性算法。而GCRoot对象包含以下四类。1、方法区的常量2、方法区的静态变量3、栈中的引用4、本地方法栈中的JNI的引用JNI的引用咱们这里暂时不管。而现在我们随便一个java应用,都会加载大量的类,这样我们的方法区中就会堆积大量的常量和静态变量。这样一来,搜索GCRoot就成了一个头疼的工作。那怎么办呢,jvm自然有它的应对方法。HotSpot目前采用的是精确式内存管理,顾名思义:虚拟机可以原创 2021-10-19 11:29:20 · 217 阅读 · 0 评论