jvm-3学习教程

jvm学习之gc垃圾回收机制

1、什么是垃圾回收?

堆中使用对象,但是不能一直放在那里,会占内存,所以需要垃圾回收,释放多余内存,从而保证程序的正常运行。

2、垃圾回收之前应该判断到底什么是垃圾?

  • 引用计数法:对象保存着被引用的次数,被引用一次就+1,删除引用一次-1,如果引用个数为0,那么会被回收,但是有个问题无法解决

堆中A,B没有别的对象引用,双方互相依赖,这样的话,两个对象永远无法被回收

  • 可达性分析(reachable anaylisis)

  从GC Roots往下追踪,如果在roots的引用链上,则表示对象是可达的,否则,表示对象不可达,对象是可以回收的

   GC Roots都有哪些:

  • 虚拟机栈中的对象(线程正在使用的对象)
  • 方法区中的对象

2、垃圾回收的算法

猜你喜欢

转载自www.cnblogs.com/zhangchiblog/p/11874359.html