簡體   English   中英

無法為對象堆保留足夠的空間來啟動JVM

[英]Could not reserve enough space for object heap to start JVM

剛遇到奇怪的問題。 當我打字

java -version

我有

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

java -Xms64m -Xmx64m -version

這個命令工作正常

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)

如果我將xms,xmx更改為128m,我會再次收到錯誤。

使用top命令和free -m我可以看到,我有超過192 MB的空閑時間,為什么我仍然會收到此錯誤?

Mem:    262144k total,    64760k used,   197384k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

謝謝

在64位環境中使用32位版本的java時遇到了同樣的問題。 在64 OS中使用64 java時,沒關系。

看起來你試圖運行它的機器只有256 MB的內存。

也許JVM嘗試分配一個64 MB內存的大型連續塊。 你有空的192 MB可能被分成小塊,因此沒有64 MB的連續塊可以自由分配。

嘗試使用較小的堆大小啟動Java程序,例如:

java -Xms16m ...

根據這篇文章,此錯誤消息表示:

堆大小比計算機的物理內存大。

編輯:我想,堆不是唯一保留的內存。 至少還有像PermGenSpace這樣的其他JVM設置要求內存。 堆大小為128M,PermGenSpace為64M,您已經填充了可用空間。

為什么不縮小其他內存設置以釋放堆空間?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM