我想限制由JVM使用的最大内存。 请注意,这不只是堆,我想限制该进程使用的内存总量。
Answer 1:
使用参数-Xms<memory>
-Xmx<memory>
。 使用M
或G
用于分别指示字节梅格斯和演出的数字后。 -Xms
表示最小和-Xmx
最大值。
Answer 2:
你不应该担心栈内存泄漏(这是非常罕见的)。 你可以有堆栈中的唯一一次失控的是无限的(或非常深)递归。
这只是堆。 对不起,起初并不完全读你的问题。
您需要运行使用下面的命令行参数的JVM。
-Xmx<ammount of memory>
例:
-Xmx1024m
这将使内存为1GB的JVM的最大。
Answer 3:
如果要限制对JVM内存(不是堆大小)的ulimit -v
为了让JVM和堆内存之间的差异的想法,看看这个优秀的文章http://blogs.vmware.com/apps/2011/06/taking-a-closer-look-at-sizing-the- Java的process.html
Answer 4:
以上答案是种正确,你将无法正常控制Java进程多少本机内存分配。 这取决于你的应用程序在做。
这就是说,取决于平台,您可能能够例如用做某种机制,的ulimit,以限制Java或任何其他进程的大小。
只是不要指望如果它击中的是限制它优雅地失败。 本机内存分配失败的情况更难处理比对Java堆分配失败。 有一个相当不错的机会,应用程序会崩溃,但是这取决于它是系统的关键是如何保持工艺尺寸下仍可能适合你。
Answer 5:
该NativeHeap可以通过-XX被increasded:MaxDirectMemorySize = 256M(默认为128)
我从来没有使用过。 也许你会觉得它有用。
文章来源: How to set the maximum memory usage for JVM?