这次我们介绍JVM中的GC算法
- 引用计数法
- 可达性分析法
首先我们提出四个问题
- 哪里的内存需要回收?
- 什么时候回收?
- 如何回收?
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”, 墙外面的人想进去, 墙里面的人却想出来。
哪里需要回收?
需要排查各种内存溢出,内存泄漏的问题的时候,当垃圾的收集称为系统高并发量的瓶颈的时候。我们需要堆垃圾收集技术做必要的监控和调节。
- 由于在线程独占区的线程开始和结束得时候,都会将对应得内存在执行前获取分配好,在方法之完成释放内存。
- 而在方法执行得过程中在线程共享区,有大量得对象在堆或者方法去创建,这些对象的内存都是动态分配的,所以这里是垃圾收集器所关注的重点。
什么时候回收
当然实在对象死亡的时候做回收,那么在计算机中,我们是如何判断一个对象是否死亡了呢?
1. 引用计数法
这里需要提到的是引用计数法,通过这种方法可以判断对象是否死亡。