程序/方法找到任何系统配置的最大堆大小和最大perm gen大小?

时间:2012-04-22 09:35:39

标签: java permgen java-memory-model

测试最大堆大小和最大permgen空间,根据Gilli在Max amount of memory per java process in Windows?建议的回复,我写了一个简单的java类,主要方法只是打印系统

当我使用下面的param从Console运行类时它运行正常,但是2048它给出了错误无法保留无法为对象堆保留足够的空间。这意味着我的系统最大堆大小允许介于1536到2048之间

 java -Xms1536m -Xmx1536m  TestJVMParam

根据http://publib.boulder.ibm.com/infocenter/javasdk/tools/index.jsp?topic=/com.ibm.java.doc.igaa/_1vg00014884d287-11c3fb28dae-7ff6_1001.html的链接,可以说是

运行64位Java时,操作系统为Java进程提供的内存空间非常大。因此,您可以假设对Java堆的最大大小没有限制,因为Java堆和本机堆之间存在资源争用。

所以我有8 GB的内存为什么VM无法为对象堆保留足够的空间?

现在我想要的第二件事就是为我的系统找到最大的permgen大小。所以我用下面的参数运行相同的程序

 java -Xms1536m -Xmx1536m -XX:PermSize=128m -XX:MaxPermSize=128m TestJVMParam

但又说它无法为对象堆预留足够的空间。怎么可能像我一样 带有Windows7 64位操作系统的8GB RAM。它不允许甚至128m的permgen?我相信我在这里遗漏了一些但却无法解决这个问题?

0 个答案:

没有答案