(四)、JVM-垃圾回收-开篇
一、什么场景下该使用什么垃圾回收策略?
- 在对内存要求苛刻的场景:想办法提高对象的回收效率,多回收掉一些对象,腾出更多内存。
- 在CPU使用率高的情况下:降低高并发时垃圾回收的频率,让CPU更多的去执行你的业务而不是垃圾回收。
二、垃圾回收发生在哪些区域?
堆、方法区
三、对象在什么时候能够被回收?
- 引用技术器(处理循环引用存在问题)
- 可达性分析:以根对象(GC Roots)作为起点向下搜索,走过的路径被称之为引用链(Reference Chain),如果某个对象到根对象没有引用链相连时,就认为这个对象是不可达的,可以回收。
四、可达性算法注意点
一个对象不可达,也不一定会被回收
五、finalize()的建议
- 避免使用finalize()方法,操作不当可能会导致问题。
- finalize()优先级低,何时会被调用无法确定,因为什么时间发生GC不确定。
- 建议使用try…catch…finally来替代finalize()**