虽然GC有助于程序运行,但GC对程序本身而言是无用的,会消耗资源。
1.GC时的计数引用
对象一旦被使用或者引用,计数器会进行+1和-1操作,当为0时被标示为垃圾。此种标示方法的弊端在于已经死亡的对象如果存在相互引用,则会一直占用内存空间,不被回收。此时会导致内存泄漏。为了解决这个问题出现了根搜索算法。
2.GC的根搜索算法
所有的内存存活对象组成一个tree.包括stack中引用的对象,常量池对象引用,class对象引用,静态对象引用。
根搜索算法的详细介绍,后面介绍。
虽然GC有助于程序运行,但GC对程序本身而言是无用的,会消耗资源。
1.GC时的计数引用
对象一旦被使用或者引用,计数器会进行+1和-1操作,当为0时被标示为垃圾。此种标示方法的弊端在于已经死亡的对象如果存在相互引用,则会一直占用内存空间,不被回收。此时会导致内存泄漏。为了解决这个问题出现了根搜索算法。
2.GC的根搜索算法
所有的内存存活对象组成一个tree.包括stack中引用的对象,常量池对象引用,class对象引用,静态对象引用。
根搜索算法的详细介绍,后面介绍。