我有兩臺linux機器(都是VM),一臺有12GB內存,另一臺有8GB內存。Java:什麼決定了linux機器中可能的最大堆大小
我試圖在兩臺機器上啓動相同的java程序,儘可能使用最大堆大小(使用-Xmx標誌)。以下是我得到的結果。
- 12GB機:9460MB
- 8GB機:4790MB
如果我指定一個最大堆大小超出上述限額的,我得到下面的錯誤。
Error occurred during initialization of VM
Could not allocate metaspace: 1073741824 bytes
我檢查了釋放內存在兩個系統(使用free
命令),和我有以下。
- 12GB機器:約3GB免費。
- 8GB機器:約4GB免費。
我的問題是,什麼決定了Java程序可以啓動的最大最大堆大小,這不會導致上述錯誤? (當程序給出上述錯誤時,系統有足夠的內存來分配1073741824
字節的內存)
什麼是您的JDK版本? 64位或32位? –
@ravindra jdk1.8.0_40,64bit –
你也設置了元空間嗎?你能發佈完整的虛擬機選項嗎? –