当前位置: 代码迷 >> 综合 >> Java虚拟机(JVM) 03 java对象的回收 which object is the garbage?算法
  详细解决方案

Java虚拟机(JVM) 03 java对象的回收 which object is the garbage?算法

热度:22   发布时间:2023-12-26 17:53:49.0

Java对象信息是存储在Java堆中的,如果不进行对堆中不需要的对象内存进行回收,就是发生堆内存溢出OutOfMemory错误,影响程序运行。所以需要对Java堆中的对象进行识别,什么对象是Garbage。

which object is the garbage?

这里需要提到Java中的引用,英文是reference。引用(Reference)数据中存储内存地址,程序用到引用的时候,根据其中的数据找到相关的内存,实现访问。引用(Reference)这种数据类型是存储在栈中的局部变量表中的。


标志计数法:
对象中增加一个计算引用次数的区域,程序每引用一次对象就加1(+1),对象的引用失效时就减1(-1)。当对象中的计数为0时候,这个对象就是garbage了。

可达性法:
跟图中的邻接单链表很像,也是形成类是于链表。开始节点叫做GC Root ,从这个节点找他是否引用了其他对象,最后形成一个图。对于这个图中的不可到达节点(不一定是单个节点,也可能是不能到达的其他子图),这些节点代表的对象就是garbage了。

  相关解决方案