[英]Java could not reserve enough space for object heap - multiple java processes
我們的一位客戶在嘗試啟動第二個Java進程時遇到了此錯誤消息。
Error occurred during initialization of VM
Could not reserve enough space for object heap
這很奇怪,因為在可用的8 Gig內存中,僅使用了2或3。
如果第一個進程未運行,則啟動第二個進程的命令將正常運行。 這是用於啟動第二個過程的命令:
java -jar Xmx512m -jar xxxJar.jar
第一個過程從Windows服務開始。 我不知道顯示服務啟動命令的好方法,很有可能執行我們的啟動批處理文件。 通過查看批處理文件,看起來正在使用以下Java選項:
-Xms1g -Xmx1g -Xss256K -Xverify:none -XX:+TieredCompilation -XX:+UseBiasedLocking
-XX:+UseParNewGC -XX:InitialCodeCacheSize=8m -XX:ReservedCodeCacheSize=32m
-Dorg.terracotta.quartz.skipUpdateCheck=true
服務啟動也顯示以下警告:
Java HotSpot(TM) 64-Bit Server VM warning: Using the ParNew young collector with the Serial old collector is deprecated and will likely be removed in a future release
這也很奇怪,因為我沒有看到其他系統的警告。
該平台是Windows Embedded 2010的JDK 1.8.0_111。
問題是:1.為什么在有5.5個可用內存的情況下Java無法啟動,並且只要求.5 Gigs max?
代替
java -jar Xmx512m -jar xxxJar.jar
嘗試
java -Xmx512m -jar xxxJar.jar
默認值是保留主內存的1/4,我懷疑在有機會報告您已兩次使用-jar
之前,它沒有這樣做。
知道為什么僅在運行其他服務時就無法獲得空間,但是仍然有5..5 Gig的可用核心嗎?
使用Windows 32位JVM時,根據操作系統的不同,最大堆大小限制為1.2G至1.5G。 默認值可能已經太大。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.