gpt4 book ai didi

java - JVM GC 将对象降级到伊甸园空间?

转载 作者:行者123 更新时间:2023-11-30 11:46:20 24 4
gpt4 key购买 nike

我猜这是不可能的……但这是可行的。我的理解是收集伊甸园空间比老年代空间更便宜,尤其是当你开始进入非常大的堆时。大型堆往往会产生长时间运行的应用程序(服务器应用程序),而服务器应用程序很多时候都想使用某种缓存。具有某种驱逐 (LRU) 的缓存往往会覆盖 GC 所做的一些假设(临时对象很快就会死亡)。所以缓存驱逐最终会比你想要的更快地填满老年代,你最终会得到一个更昂贵的老年代收集。

现在,如果 java 提供一种将引用标记为即将死亡(删除关键字)的方法,似乎可以避免这种事情?这个和c++的区别在于使用是可选的。并且调用 delete 并不会真正删除对象,而是向 GC 提示它应该将对象降级回 Eden 空间(在那里它会更容易被收集)。我猜这个功能不存在,但是,为什么不存在(这是一个坏主意有什么原因吗)?

最佳答案

实际上,eden 空间是新创建对象的内存区域。一旦一个对象离开了伊甸园空间,它就不能再被放置在那里,然后 Java 的 GC 实现非常不透明,通常没有什么可做的。

在任何情况下它都会打破一些限制,伊甸园空间很容易被垃圾收集,因为它会注意删除生命周期短的项目。如果一个对象存活了足够长的时间,那么它必须被移动到其他地方,这就像试图违背 GC 本身强加的规则,这在 Java 中是不容易获得的。

关于java - JVM GC 将对象降级到伊甸园空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9849357/

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