繁体   English   中英

如何设置JVM的最大内存使用量?

[英]How to set the maximum memory usage for JVM?

我想限制JVM使用的最大内存。 注意,这不仅仅是堆,我想限制此进程使用的总内存。

使用参数-Xms<memory> -Xmx<memory> 在数字后面使用MG分别表示字节的Megs和Gigs。 -Xms表示最小值, -Xmx表示最大值。

你不应该担心堆栈泄漏内存(这是非常罕见的)。 只有无限(或非常深)递归才能使堆栈失控。

这只是堆。 对不起,首先没有完整地阅读你的问题。

您需要使用以下命令行参数运行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进程分配的本机内存量。 这取决于您的应用程序正在做什么。

也就是说,根据平台,您可以使用某种机制,例如ulimit来限制java或任何其他进程的大小。

如果达到该限制,只是不要指望它会优雅地失败。 本机内存分配失败比Java堆上的分配失败要难得多。 应用程序崩溃的可能性相当大,但取决于系统保持流程大小的重要性,这可能仍然适合您。

NativeHeap可以通过-XX增加:MaxDirectMemorySize = 256M(默认值为128)

我从来没用过它。 也许你会发现它很有用。

暂无
暂无

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

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