[英]Unable to set Java heap size larger than 1568
我正在運行具有以下屬性的服務器:
Windows Server 2008 R2 標准版 - 64 位 4GB RAM
我正在嘗試將應用程序的堆大小設置為 3gb。 我正在使用標志 -Xmx3G -Xms3G。 使用標志運行會導致以下錯誤:
VM 初始化期間發生錯誤 無法為對象堆保留足夠的空間 無法創建 Java 虛擬機。
我一直在玩這個設置,看看我的天花板是多少,發現 1568 是我的天花板。 我錯過了什么?
您的系統上有多少物理內存可用(在原始 4 GB 之外)? 聽起來您的系統在 vm 啟動時沒有 3GB 的物理內存可用。
請記住,JVM 需要的內存多於分配給堆的內存——還有其他數據結構(線程堆棧等)也需要內存。 因此,您提供的設置嘗試使用超過 3GB 的內存。
另外,您使用的是 64 位 jvm 嗎? 根據本文檔, 32 位虛擬機上堆大小的實際限制為 1.4 到 1.6 GB。
Java 在啟動時需要連續的虛擬內存。 在 Windows 上,32 位應用程序在 32 位模擬環境中運行,因此與在 32 位操作系統中相比,您不會獲得更多的連續內存。 cf 在 Solaris 上,您會為 32 位 Java 獲得超過 3 GB 的虛擬內存。
我建議您使用 64 位版本的 Java,因為這將使用您擁有的所有內存。 您仍然需要有空閑內存,但更大的地址空間不會受到碎片的影響。
順便說一句:堆空間只是所使用內存的一部分,您需要共享庫、直接內存、GUI 組件等的內存。
看來您沒有可用的 3G 物理內存。 這是一篇關於 Java 堆大小設置錯誤的有趣文章。 Java 堆大小設置錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.