簡體   English   中英

您可以創建(Oracle JVM)Java堆的最小值是多少?

[英]What is the smallest you can make a (Oracle JVM) java heap?

java很樂意接受-Xmx1k作為參數,但“實驗顯示”這仍然像8MB堆。

谷歌搜索沒有使用任何東西,所以我想知道,你可以在Java中授權的最小堆大小是多少?

謝謝,埃里克

編輯:

它似乎因平台和java版本而有所不同。 在我的Mac上,使用1.6.0_24,我可以配置它而沒有錯誤的最小值是:

$ java -Xms1k -Xmx4097k -XX:NewSize=192k  -cp . Foo
5636096

或大約5.375M,其中Foo.java只是:

public class Foo {
    public static void main(String[] args) {
        System.out.println(Runtime.getRuntime().totalMemory());
    }
}

因此我的環境是:

$ uname -a
Darwin turbo.local 10.7.0 Darwin Kernel Version 10.7.0: Sat Jan 29 15:17:16 PST 2011; root:xnu-1504.9.37~1/RELEASE_I386 i386
$ java -version
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-334-10M3326)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-334, mixed mode)

正如我在下面的評論中提到的,我設置了一個小堆試圖驗證一個昂貴的算法確實幾乎沒有使用內存,而不是試圖省錢。

謝謝你的答案 - 當我試圖谷歌這個時,我很沮喪。

來自http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html上的文檔

-Xmxn:此值必須是1024的倍數,大於2MB

我的快速測試表明:

java -Xmx2M HelloWorld

適用於1.6.0_24

不,它並不“樂意”接受它。

broach@broach-laptop:~/NetBeansProjects$ /usr/local/jdk1.6.0_20/bin/java -Xmx1k
Error occurred during initialization of VM
Too small initial heap

這是Oracle JVM 1.6.0_20

我的“實驗”表明,任何小於-Xmx5M東西-Xmx5M給你這個錯誤。

編輯:我實驗更多... -Xmx4100k似乎飛。

除非您正在使用極其有限的移動設備(在這種情況下您應該在該設備上進行測試),即使8MB也不多

服務器的成本約為70美元/ GB或每8 MB約50美分。

使用選項-mx1m -XX:NewSize=256k運行-mx1m -XX:NewSize=256k以下

System.out.println(Runtime.getRuntime().totalMemory()/1024);

打印

2304

這是2.25 MB。

別忘了,堆不是整個應用程序。 您有permgen和共享庫以包括總大小。

暫無
暫無

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

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