簡體   English   中英

無法設置大於 1568 的 Java 堆大小

[英]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.

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