我有一台带有16GB RAM的Windows 7笔记本电脑。当我运行多个java服务器时,出现OutOfMemory错误,但是,Windows任务管理器显示我仍有6GB剩余物理内存。在我看来,我的JVM只能为所有正在运行的java应用程序分配〜2GB的堆。64位JVM无法为对象堆预留足够的空间
所以我写了一些非常简单的Java代码:
public class HelloWorld {
public static void main(String[] args) {
for(;;) System.out.println("Hello, World");
}
}
我-jvm版本:
$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
JAVA_HOME “C:\ Program Files文件\的Java \ jdk1.8.0_111”
JRE_HOME“C:\ Program Files \ Java \ jre1.8.0_111”
我做了一个简单的java -Xmx256m -Xms256m HelloWorld
,它的工作糟透了不如预期,但是当我切换到java -Xmx2048m -Xms2048m HelloWorld
我得到如下:
Error occurred during initialization of VM
Could not reserve enough space for object heap
我试过多个JDK,但他们都不工作。窗口和JVM都在64位。
我能做些什么来解决这个问题?
vmmap可能重复[“VM初始化期间发生错误;无法为对象堆预留足够的空间“使用-Xmx3G](http://stackoverflow.com/questions/9303889/error-occurred-during-initialization-of-vm-could-not-reserve-enough-space-for) 。特别是,看到这个答案http://stackoverflow.com/a/9304270/529630 – Dunes
你有交换启用? windows的内存记帐与linux相比是不同的。 – the8472