![](/img/trans.png)
[英]How is the default maximum heap size of an Oracle Java 7 JVM calculated?
[英]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.