簡體   English   中英

Java:盡管有足夠的內存,但“無法為對象堆保留足夠的空間”錯誤

[英]Java: "Could not reserve enough space for object heap" error, despite enough memory

運行以下命令時:

$ javac -J-Xmx1072M ...

一切正常。

使用更大的內存運行相同的命令時:

$ javac -J-Xmx2048M ...

我收到以下錯誤:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.

但是,我不明白為什么,因為當我在 Windows 命令提示符下運行systeminfo時,我得到以下信息:

Total Physical Memory:     16,315 MB
Available Physical Memory: 6,351 MB
Virtual Memory: Max Size:  32,187 MB
Virtual Memory: Available: 13,666 MB
Virtual Memory: In Use:    18,521 MB

意思是,我還有很多物理內存。

似乎是什么問題?

JVM 不能為它的對象堆在任何地方挑選任何舊內存,它必須是連續的 意味着一個連續的、未碎片化的空閑內存塊。 雖然理論上您可能有足夠的可用原始內存來啟動具有此堆大小的 JVM,但如果它不是連續的,那么就 JVM 而言它是無用的。

請注意,使用 32 位地址空間(如果您使用的是 32 位操作系統或 32 位 JVM)時,這種情況發生的可能性要大得多,但無論如何仍然可能發生。

暫無
暫無

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

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