2014-02-12 46 views
1

目前我們遇到了一個問題,我們的java應用程序可以使用JRE6平穩運行,但是對於JRE7,它有時會報告「無法創建Java虛擬機」並且無法啓動程序。我們在啓動命令行中有「-Xmx1024m」選項。最大堆大小從java 6減少到java 7?

在谷歌搜索後,人們建議檢查可以在PC中請求的最大堆大小。然後我嘗試了下面的。

爲JRE6,

C:\Users\joey>java -Xmx1214m -version 
java version "1.6.0_45" 
Java(TM) SE Runtime Environment (build 1.6.0_45-b06) 
Java HotSpot(TM) Client VM (build 20.45-b01, mixed mode) 

C:\Users\joey>java -Xmx1215m -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

爲JRE7,

D:\Program Files\Java\jre7\bin>java.exe -Xmx930m -version 
java version "1.7.0_51" 
Java(TM) SE Runtime Environment (build 1.7.0_51-b13) 
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode) 

D:\Program Files\Java\jre7\bin>java.exe -Xmx931m -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

當我關閉電腦和釋放內存最流程,以2.5 GB,用於JRE7,它將與1094米成功,如下圖所示。

D:\Program Files\Java\jre7\bin>java.exe -Xmx1094m -version 
java version "1.7.0_51" 
Java(TM) SE Runtime Environment (build 1.7.0_51-b13) 
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode) 

D:\Program Files\Java\jre7\bin>java.exe -Xmx1095m -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

看來,最大堆大小JVM可以請求與系統中可用的內存大小相關的,沒有人知道確切的關係?

有什麼方法可以在創建JVM時啓用JRE的跟蹤日誌嗎?

謝謝!

問候, 喬伊

回答

0

我面臨着同樣的問題,在各種Windows操作系統黃麴黴(Win7的,Win2008R2)雖然具有足夠的可用內存(3-5G),從jre6_20切換到jre7_51時(32位虛擬機)

在Java 6上使用vm args -Xmx1300m和-XX:MaxPermSize = 256m,VM能夠啓動。但是,對於java7,我必須降低啓動最大內存(xmx 100m或permgen 100m)才能啓動虛擬機。有趣的部分是:如果我重新啓動我的盒子,jvm 7以原始vm參數(-Xmx1300m和-XX:MaxPermSize = 256m)開始,所以我懷疑根本原因可能是JVM組合的操作系統。

我知道,在Windows操作系統 - 32 bit VMs期望有一個大的內存塊,但不能使用的最大進程的內存大小範圍從1.4G到1.6G(因爲附加的約束)

任何故障排除指針?我沒有提供java7發行說明中的​​任何信息(或者我無法發現這些信息)

0

我有類似的問題Windows 7 64位, \的Java \ jdk1.7.0_51 \斌\ java.exe的 「-Xms32m -Xmx1024m -XX:MaxPermSize參數=256米-version

Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Error: Could not create the Java Virtual Machine. 
Error: A fatal exception has occurred. Program will exit. 

這工作 」 C:\ Program Files文件(x86)的\的Java \ jdk1。 7.0_51 \ bin \ java.exe「-Xms32m -Xmx512m -XX:MaxPermSize = 256m -version

這也行得通了(我可以重新編譯或不編譯,不會編譯差異 「C:\ Program Files(x86)\ Java \ jdk1.6.0_45 \ bin \ java。EXE」 -Xms32m -Xmx1024m -XX:MaxPermSize參數=256米-version

我嘗試關閉Windows DEP,didnt有所作爲 http://windows.microsoft.com/en-us/windows-vista/data-execution-prevention-frequently-asked-questions

我的虛擬內存設置,從允許Windows來管理 改變重組後http://windows.microsoft.com/en-us/windows/change-virtual-memory-size#1TC=windows-7

我調升Virual內存在Windows和它允許它的工作,有時...(與xmx1024)

閒來無事會消耗大量的資源(內存等,我也有Oracle數據庫運行在當地,但關閉)

「C:\ Program Files(x86)\ Java \ jdk1.7.0_51 \ bin \ java.exe」-Xms32m -Xmx1024m -XX:MaxPermSize = 256m -version 初始化期間發生錯誤VM 無法爲對象堆預留足夠的空間 錯誤:無法創建Java虛擬機。 錯誤:發生了致命異常。程序將會退出。

這工作 「C:\ Program Files文件(x86)的\的Java \ jdk1.7.0_51 \斌\ java.exe的」 -Xms32m -Xmx900m -XX:MaxPermSize參數=256米-version

這種失敗 ü :>「C:\ Program Files(x86)\ Java \ jdk1.7.0_51 \ bin \ java.exe」-Xms32m -Xmx2024m -XX :MaxPermSize = 256m -version 虛擬機初始化期間發生錯誤 無法預留足夠的對象堆空間 錯誤:無法創建Java虛擬機。 錯誤:發生了致命異常。程序將會退出。

新版本,作品甚至讓Windows Managage虛擬內存和DEP開啓 「C:\ Program Files文件(x86)的\的Java \ jdk1.7.0_65 \斌\ java.exe的」 -Xms32m -Xmx1024m -XX :MaxPermSize = 256m -version