繁体   English   中英

如何设置JVM进程将尝试分配的最大内存量?

[英]How to set the maximum amount of memory the JVM process will try to allocate?

我正在尝试设置JVM进程将尝试分配的最大字节数。 不是在说堆,而是在操作系统级别的内存总量。 我看上去很努力,但是还没有找到任何解决方案,我很难相信。 即使使用Java 10,它也应该能够保持在容器内存范围之内。

在大约9年前就已经问过这个问题(请参阅: 如何设置JVM的最大内存使用量? ),但答案不正确

Runtime对象包含一个maxMemory()方法,该方法错误地记录如下:

返回Java虚拟机将尝试使用的最大内存量。

maxMemory()方法返回的最大堆数量而不是JVM进程可以要求的总内存量。

问题 :JVM不能对自己的内存使用量进行硬性限制吗?

可能没有严格的限制可以轻松设置,例如,Java线程堆栈,编译的代码和NIO缓冲区是在堆外分配的。 即使我们将-Xmx-Xss-XX:MaxMetaspaceSize和其他选项-XX:MaxMetaspaceSize ,也总是有可能通过Java Native Interface交互的自定义​​本机代码将管理它自己的内存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM