gpt4 book ai didi

尽管设置了 -Xmx300m -Xss512k -XX :MetaspaceSize=100M?,Java 内存仍超过 512mb

转载 作者:行者123 更新时间:2023-12-02 11:52:25 24 4
gpt4 key购买 nike

我已经使用以下虚拟机选项将 java 应用程序部署到 Heroku:

-Xmx300m -Xss512k -XX:MetaspaceSize=100M

尽管如此,我的应用程序始终从 Heroku 收到错误 R14(内存配额超出) 错误。这是因为内存占用达到540+mb(配额为512mb)。

当我在 VM 参数中只为其分配 400mb 时,java 应用程序如何占用超过 500mb 的空间?我是否缺少虚拟机参数?

我预计 JVM 在达到 512mb 内存之前会出现 OOM(但它只是增加到超出我设置的限制)。

也许我完全误解了这些虚拟机参数的工作原理?

对此的任何帮助将不胜感激。

注释:

  • 我正在使用 java 8
  • 我的 procfile 如下:

    web: java -Xmx300m -Xss512k -XX:MetaspaceSize=100M -javaagent:./lib/heroku-javaagent-2.0.jar=stdout=true,lxmem=true -Dserver.port=$PORT -Dspring.profiles.active=heroku -cp ./app.jar          org.springframework.boot.loader.JarLauncher

上面的 java 代理在日志中输出以下详细信息:

Dec 13 11:45:54 app/web.1:  measure.mem.jvm.heap.used=177M measure.mem.jvm.heap.committed=212M measure.mem.jvm.heap.max=273M 
Dec 13 11:45:54 app/web.1: measure.mem.jvm.nonheap.used=129M measure.mem.jvm.nonheap.committed=132M measure.mem.jvm.nonheap.max=0M
Dec 13 11:45:54 app/web.1: measure.mem.jvm.direct.used=0M measure.mem.jvm.direct.count=0 measure.mem.jvm.direct.capacity=74M
Dec 13 11:45:54 app/web.1: measure.mem.jvm.mapped.used=0M measure.mem.jvm.mapped.count=0 measure.mem.jvm.mapped.capacity=0M
Dec 13 11:45:54 app/web.1: measure.mem.linux.vsz=5817M measure.mem.linux.rss=543M

最佳答案

How can a java application take up over 500mb, when I'm only allocating 400mb to it in the VM args? Am I missing a VM arg?

JVM 有许多类别的内存,包括堆、元空间、线程堆栈、代码缓存等。甚至可能存在 JVM 无法解释的通过 JNI 分配的内存。看看this blog post on JVM memory .

I would expect the JVM to OOM before reaching 512mb of memory (but it just increases beyond the limits I have set it).

大多数 OOM 错误仅在堆空间不足时发生。就您而言,您有足够的堆空间,但所有其他类别加起来并超过了 512mb 限制。

您可以尝试将 Xmx 降低为 -Xmx256m。低于该值,您可能会开始出现 OOM 错误。

您可能还想检查代码是否存在泄漏 IO 缓冲区。如果未正确关闭,它们有时会导致 native 内存(堆外)泄漏。最后,检查您的任何依赖项(第三方库)是否正在使用 JNI 或分配 native 内存。

关于尽管设置了 -Xmx300m -Xss512k -XX :MetaspaceSize=100M?,Java 内存仍超过 512mb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791341/

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