测试最大堆大小和最大permgen空间,根据Gilli在Max amount of memory per java process in Windows?建议的回复,我写了一个简单的java类,主要方法只是打印系统
当我使用下面的param从Console运行类时它运行正常,但是2048它给出了错误无法保留无法为对象堆保留足够的空间。这意味着我的系统最大堆大小允许介于1536到2048之间
java -Xms1536m -Xmx1536m TestJVMParam
运行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?我相信我在这里遗漏了一些但却无法解决这个问题?