垃圾收集器 (GC) 是只收集对象还是覆盖它存储的数据?
Does Garbage Collectors (GC) collect only objects or also overwrite the data stored by it?
HotSpot 的垃圾收集器 (GC)
当 HotSpot 的垃圾收集器 (GC) 运行时,它是否仅收集对象或覆盖存储的数据以防止内存转储?
这是一个相当宽泛的问题,因为 GC 有许多不同的算法。
以Hotspot和G1为例
次要 GC 将对象从伊甸园 space 复制到幸存者 space,在幸存者 space 秒之间,并将对象提升到老年代(取决于对象年龄)。在所有这些中,这些对象使用的内存随后将被覆盖但不会被释放。
Major GC 会将对象从一个区域(这是内存的逻辑区域)复制到另一个区域以压缩对象,从而消除碎片。同样,这些对象使用的内存将在将来的某个时候被覆盖。
一些收集器,如来自 Azul(我为之工作)的 Zing,当堆使用量减少并且不再需要所有分配的页面时,取消提交未使用的内存。不过,并非所有 GC 都这样做。此 returns 内存页到 OS 允许它们用于其他应用程序。
HotSpot 的垃圾收集器 (GC)
当 HotSpot 的垃圾收集器 (GC) 运行时,它是否仅收集对象或覆盖存储的数据以防止内存转储?
这是一个相当宽泛的问题,因为 GC 有许多不同的算法。
以Hotspot和G1为例
次要 GC 将对象从伊甸园 space 复制到幸存者 space,在幸存者 space 秒之间,并将对象提升到老年代(取决于对象年龄)。在所有这些中,这些对象使用的内存随后将被覆盖但不会被释放。
Major GC 会将对象从一个区域(这是内存的逻辑区域)复制到另一个区域以压缩对象,从而消除碎片。同样,这些对象使用的内存将在将来的某个时候被覆盖。
一些收集器,如来自 Azul(我为之工作)的 Zing,当堆使用量减少并且不再需要所有分配的页面时,取消提交未使用的内存。不过,并非所有 GC 都这样做。此 returns 内存页到 OS 允许它们用于其他应用程序。