gpt4 book ai didi

java - 堆内存行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:00:33 25 4
gpt4 key购买 nike

我一直对堆内存行为有疑问。

分析我的应用程序时,我得到了上图。似乎一切都很好。但我不明白为什么,在 GC 时间,堆会增长一点点,即使有足够的内存(红色圆圈)。

这意味着对于长时间运行的应用程序,它会在某个时间耗尽堆空间?

alt text

最佳答案

不一定。垃圾收集器可以以任何它认为合适的方式自由使用最大分配的堆。根据当前行为(但内存条件不同)推断 future 的 GC 行为绝不能保证准确。

这确实有一个不幸的副作用,即很难确定 OutOfMemoryError 是否将要发生,除非它确实发生了。一个合法的(但可能效率很低)垃圾收集器可以在达到内存上限之前什么都不做,然后进行 stop-the-world 标记并扫描整个堆。通过此实现,您会看到自己的内存在不断增加,并且可能会想说 OOME 即将发生,但您就是说不出来

对于如此小的堆大小,这里的增加可能只是由于簿记/缓存大小对齐等。从秤上的分辨率来看,你说的是不到 50KB 左右,所以我不应该担心。

如果您确实认为存在 OutOfMemoryErrors 的合法风险,证明这一点的唯一方法是进行压力测试并证明应用程序确实用完了堆空间。

关于java - 堆内存行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943384/

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