gpt4 book ai didi

object - 为什么 JVM GC 喜欢不可变对象(immutable对象)?

转载 作者:行者123 更新时间:2023-12-04 03:38:56 26 4
gpt4 key购买 nike

我知道 JVM GC 喜欢短期对象的原因,因为它可以在次要 GC 中收集。但是为什么 JVM GC 喜欢不可变对象(immutable对象)呢?

编辑:
Charlie Hunt 在他的 presentation 中说 GC 喜欢不可变对象(immutable对象)。 .

谢谢

最佳答案

如果 GC 可以知道一个对象不包含对任何 gen0 对象的任何引用,那么在执行 gen0 收集时可以忽略它。同样,如果一个对象不包含对任何 gen0 或 gen1 对象的任何引用,则在执行 gen1 收集时可能会忽略它。在收集过程中可以忽略的对象越多,收集的速度就越快。

如果一个对象在 gen0 GC 中幸存下来,则可以确定它持有引用的任何 gen0 对象都将被提升为 gen1;同样,如果一个不包含任何 gen0 引用的对象在 gen1 GC 中幸存下来,则它包含的任何 gen1 引用都将被提升为 gen2。因此,一旦在 gen0 收集期间检查了一个对象,则无需在下一次 gen1 收集之前再次检查它,除非它被修改。同样,在 gen1 收集期间检查的对象在下一次 gen2 收集之前不需要检查,除非它被修改。

知道对象是否被修改是一个棘手的问题,但关键是如果对象没有被修改,这对 GC 非常有利。

关于object - 为什么 JVM GC 喜欢不可变对象(immutable对象)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com