gpt4 book ai didi

java - 默认 Java 堆大小及其可能导致的内存问题

转载 作者:行者123 更新时间:2023-12-01 07:47:13 25 4
gpt4 key购买 nike

我有一个应用程序,其后端基于 Java 8 构建。最近我发现该应用程序由于 OOM 而自行重新启动。通过查看 Docker 容器的退出状态,我知道这是因为 OOM。没有为系统配置 XmxXms 值,因此它应该使用默认堆大小,如果我的服务器有 4 GB 内存,则应该使用默认堆大小大约 512 MB(我在一些 SO 答案中读到,默认堆最大大小是现有内存的 1/8)。设置 XmsXmx 值后,我的应用程序现在可以正常运行,无需重新启动。在设置 XmxXms 值之前,我还尝试将服务器中的内存增加到 7 GB,但这也没有帮助。我想知道的是,当应用程序有足够的可用内存时,系统为什么会 OOM。
如果应用程序的内存需求增加,默认堆大小是否会自行扩展?如果内存已满,为什么 GC 没有被触发?

最佳答案

Does the default heap size extend itself if memory requirement increases for the app?

是的,但仅限于 -Xmx 中的值(或 JVM 选择的默认值)。

If memory was getting full, why was GC not getting triggered?

GC 被触发,但无法收集任何垃圾。堆中的所有内容都不是垃圾。

关于java - 默认 Java 堆大小及其可能导致的内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016025/

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