如何设置JVM的最大内存使用量?
我想限制JVM使用的最大内存。 请注意,这不仅仅是堆,我想限制这个过程使用的总内存。
使用参数-Xms<memory>
-Xmx<memory>
。 用数字后面的M
或G
分别表示Megs和Gig字节。 -Xms
表示最小值, -Xmx
表示最大值。
你不应该担心栈泄漏的内存(这是非常罕见的)。 唯一一次可以让堆栈失去控制的是无限的(或非常深的)recursion。
这只是堆。 对不起,起初没有完全读你的问题。
您需要使用以下命令行参数运行JVM。
-Xmx<ammount of memory>
例:
-Xmx1024m
这将允许JVM最多1GB的内存。
如果你想限制内存为jvm(不是堆大小)ulimit -v
要了解jvm和堆内存之间的区别,请参阅这篇优秀的文章http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the- Java的process.html
上面的答案是正确的,你不能优雅地控制一个Java进程分配多less本地内存。 这取决于你的应用程序在做什么。
也就是说,根据平台的不同,您可能会使用某种机制,例如ulimit来限制java或其他进程的大小。
如果达到这个限度,不要指望它会优雅地失败。 原生内存分配失败比java堆上的分配失败更难处理。 应用程序崩溃的可能性相当大,但取决于系统对于保持适合您的进程大小有多关键。
NativeHeap可以增加-XX:MaxDirectMemorySize = 256M(默认是128)
我从来没有用过它。 也许你会发现它有用。