[英]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.