【发布时间】:2018-12-19 10:49:32
【问题描述】:
我有一个 java 应用程序,它使用以下设置运行:
/usr/bin/java ... -XX:+UseG1GC -Xms18G -Xmx22G ...
同时我可以看到java二进制在服务器上使用了27617528的RSS(32453352 virt)。
为什么会这样,我怎样才能确定地限制 java 内存?
【问题讨论】:
-
32453352k? 32TB? -
因为您传递的内存设置与本机内存不同。您在此处设置的内容会影响 Java 进程可用的 JVM 内存。但是 JVM 本身可以为自己的目的消耗内存(系统的)。您还可能遇到本机代码(由您的 JVM 调用)的情况 - 例如通过 JNI - 将分配超出您限制的内存方式(通过 malloc)。
-
签名...谢谢。 Java 是运营商的一大 WTF。
标签: java memory out-of-memory