jvm垃圾回收
来源:互联网 发布:linux dd bs 编辑:程序博客网 时间:2024/04/30 04:19
怎么判断对象是否存活呢?
只要有两种算法:
1,引用计数算法,给对象中添加一个引用计数器,每当一个有一个地方引用它时,计数器值+1,当引用失效,计数器-1。计数器为0时,说明对象不可能再被利用。
于是通知GC收集器,回收。这个算法思想很简单,但是存在问题,就是当两个对象互相持有对方的引用,而这两个对象在其他地方又没用处时,这两个对象将
永远不会被回收。
2,可达性分析算法,通过一系列“GC Roots”的对象作为起始点,开始向下搜索,搜索走过的路称为引用链,当一个对象到GC Roots没有任何引用链相连时,证明
该对象不可用。就可以判断为可回收对象。这一算法很好的解决了上面的问题。
但是,即使可达性分析算法中不可达的对象。也并非一定会被回收。
如果对象没有与GC Roots相连的引用链,他会被第一次标记,并筛选,筛选条件是是否有必要执行finalize()方法。当对象没有覆盖finalize()方法,或者已经被finalize()
方法掉用过,虚拟机视为没有必要执行。如果被视为有必要执行,这个对象就会被放到一个F-Queue队列中,并在稍后,由一个虚拟机自动建立的低优先级线程Finalizer
去执行。但不承诺等待该线程运行结束。原因是,如果一个对象在finalize()中执行缓慢,或者发生了死循环,将有可能会导致F-Queue队列中其他对象永久等待,甚至
怎个内存回收系统崩溃。稍后,GC将对F-Queue进行最后一次小规模标记,只要对象与引用链中的任何一个对象建立关联,那么第二次标记就会被移出。就逃脱了死亡
的命运呢。
- JVM 之垃圾回收
- jvm - 垃圾回收
- jvm垃圾回收
- JVM垃圾回收策略
- JVM 垃圾回收算法
- JVM垃圾回收
- jvm垃圾回收
- JVM垃圾回收总结
- JVM 垃圾回收算法
- JVM 垃圾回收 总结
- jvm垃圾回收原理
- JVM垃圾回收总结
- jvm垃圾回收
- jvm垃圾回收
- JVM垃圾回收机制
- JVM垃圾回收机制
- jvm垃圾回收
- JVM垃圾回收器
- hibernate查询之Criteria实现分页方法(GROOVY语法)
- #define 的高级用法
- Spring 配置 工程Web.xml中encodingFilter
- 网页抓取神器scrapy的安装搭建
- Android Studio生成数字签名
- jvm垃圾回收
- Android OpenGL ES(七)----理解纹理与纹理过滤
- 爸爸和儿子的对话!佩服!值得存五十年!
- C++IO对象不可复制或赋值
- 模板方法
- Java设计模式之工厂方法模式
- WebBrower開發使用教程
- background sprite 精灵技术 也叫雪碧技术
- VS2010 调试窗口一闪而过解决方法