如何保证将特定GB分配为JVM的堆内存

时间:2015-01-20 14:37:28

标签: java memory memory-management jvm

-Xmx10g保证JVM从OS获取10G进程。同样,我想保证特定的内存量(比如4g)用于我的非堆使用。

如果我的机器的RAM是8GB而我的java进程的Xmx是2G。现在,可能还有其他进程可能会占用一些内存。所以,当我想启动我的JVM时,我想指定我想在我的JVM中使用的关闭堆内存量。

-XX:MaxDirectMemorySize仅指定最大直接内存大小。

如何确保特定大小的堆外内存的保证可用性?是否有任何参数。

2 个答案:

答案 0 :(得分:3)

您对参数-Xmx10g的理解并不完全正确。它允许JVM向操作系统询问其堆的最多10GB内存。它不能保证JVM能够获得它。实际上,如果您的系统没有足够的内存(物理和分页),JVM将无法获得它。

对于其他内存(堆除了),JVM会询问它并在有足够的时候获取它。但同样,没有保证,也没有保证参数。

答案 1 :(得分:0)

我建议将内存映射文件用于off heap,因为这些文件在处理提交的大小时更灵活。

在您的情况下,您可能需要一个启动程序或脚本来选择堆大小,除非您可以确定堆大小为2 GB,因为您已经确定这已经足够了。