我有一臺帶有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