JAVA GC 主要 GC 与次要 GC

标签 java garbage-collection

在我们对延迟敏感的应用程序中,我们有缓存数据(驻留在 TG 中)和在 YG 中消亡的短暂对象。我已经看到次要 GC 时间和主要 GC 时间有显着差异。我怀疑这与TG的尺寸相对较大有关。 谁能解释 GC 时间如何与 TG 大小相关。 Minor GC 非常频繁和快速。

最佳答案

在 YG 中存活下来的对象被移动到 TG/Old generation 以释放 YG 中的空间。 YG 的大小保持较小,以确保次要收集不会花费太多时间并且可以更频繁地运行。并且在这些仍然具有引用的次要 GC 对象被移动到 TG。

所以 TG 大小更大,因为通常较大的物体在很少的 YG 清理中幸存下来会移动到这个部分。 TG 中的清理也不会经常运行,因此可以分配更大的内存。

所以次要 GC 会清理 YG 中的对象,而主要 GC 会清理 YG 和 TG。

关于JAVA GC 主要 GC 与次要 GC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13642241/

相关文章:

Java线程-接口(interface)问题

java - 每个线程上有多个任务的执行器服务

java - 我有 "fixed"内存泄漏,但是..如何以更好的方式修复它?

Java HotSpot 持续时间极长的年轻 Collection

Java内存优化(如何避免内存泄漏 - 具体示例)

java - 创建一个单独的方法来从 Assets 文件夹中的子文件夹中读取文本文件

java - 带有抽象说明的工厂模式

javascript - 从两个动态下拉列表中选择值

python - 了解 gc.get_referrers

actionscript-3 - AS3 : Marking a variable for garbage collection, 为空还是删除?