JVM垃圾回收的二次标记
来源:互联网 发布:js查找字符串出现次数 编辑:程序博客网 时间:2024/06/01 09:28
在根搜索中得到的不可达对象并不是立即就被标记成可回收的,而是先进行一次标记放入F-Queue等待执行对象的finalize()方法,执行后GC将进行二次标记,复活的对象之后将不会被回收。因此,使对象复活的唯一办法就是重写finalize()方法,并使对象重新被引用。
上面是引用了一篇博客里面的话,基本上和《深入理解java虚拟机》里面‘对象的生存和死亡中’提到的内容差不多,有一点,finalize()只会执行一次,而且JVM不保证该函数的顺利执行完毕,因为如果该函数的操作比较复杂或者出现异常死循环之类的,会导致整个GC程序的崩溃,并不能实现C++中析构函数那样的功能,从书本上和网上的建议都是不要在这个函数里面做过多的操作,善于使用try–catch–finally块。
在这里只需要知道,GC会二次标记,第一次标记,标记没有重写finalize()函数遮着没有必要执行finalize()函数的对象(已经执行过),第二次标记F_Queue中没有在 finalize()函数里自救的对象(没有与引用莲重新连接上)。
0 0
- JVM垃圾回收的二次标记
- jvm垃圾回收-标记复制
- JVM的垃圾回收
- JVM的垃圾回收
- JVM的垃圾回收
- JVM垃圾收集器----垃圾标记、回收算法
- 再议JVM的垃圾回收
- JVM的垃圾回收机制
- JVM的垃圾回收机制
- jvm垃圾回收的补充
- JVM的垃圾回收机制
- JVM的垃圾回收机制
- jvm的垃圾回收器
- GC垃圾回收的三色标记算法
- 以标记清除的方式垃圾回收
- jvm垃圾回收算法(并发垃圾收集器(CMS)为什么没有采用标记整理-算法来实现,而是采用的标记-清除算法?)
- java垃圾回收的标记、算法、回收器总结
- jvm:停止复制、标记清除、标记整理算法(垃圾回收)
- nginx proxy cache 缓存 流程
- jQuery选择器探究:Sizzle构造函数
- 反向迭代器(rbegin,rend)
- WebSocket 的性能与压力测试
- HDU1102 Constructing Roads
- JVM垃圾回收的二次标记
- JAVA练习-输出101到200之间的素数
- Redis学习(3.1)spring boot整合Redis速成
- poj1035 Spell checker
- spring mvc 请求转发和重定向
- 逻辑数据库设计 - 单纯的树(递归关系数据)
- Ubuntu14.04 terminal添加右键
- 外部类为abstract时,出错记录。
- iOS 照片时间轴