201


Javaでは-Xms256mのように利用可能なメモリを指定できますが、指定しない場合のデフォルトサイズ はどのようになりますでしょうか？


CC BY-SA 4.0
2014-11-26T07:39:54.657
199
2023-06-18T23:05:37.013
2023-06-18T23:05:37.013
3060
63
question
java
Javaで利用可能なメモリサイズのデフォルト値は？


下みたいに Java コマンドで確認できるみたいです。

[code]

    % java -XX:+PrintFlagsFinal -version 2>&1 | grep -i heapsize
        uintx ErgoHeapSizeLimit                         = 0               {product}
        uintx HeapSizePerGCThread                       = 87241520        {product}
        uintx InitialHeapSize                          := 134217728       {product}
        uintx LargePageHeapSizeThreshold                = 134217728       {product}
        uintx MaxHeapSize                              := 2147483648      {product}
    
[/code]


CC BY-SA 3.0
2014-11-26T08:47:32.810
200
2014-11-26T09:01:47.987
2014-11-26T09:01:47.987
41
41
199
answer


Java SE 8のドキュメントを直訳すると以下のようです。

-Xms

  * Java SE 5.0以前：プラットフォームごとの適切なサイズ
  * Java SE 5.0 ～ Java7：物理メモリの1/64より大きい適切なサイズ
  * Java8以降：Old世代とYoung世代に割り当てられたサイズの合計

-Xmx

  * Java SE 5.0以前：64MB
  * Java SE 5.0 ～ Java7：物理メモリの1/4より小さい適切なサイズだが、最大でも1GBまで
  * Java8以降：言及はありませんが、Metaspace領域の特性から考えると可能な限り

Java8ではヒープメモリのPermanent領域が消えて、  
代わりにネイティブメモリにMetaspace領域が追加されました。  
これに合わせてメモリ関連のオプション・ツールが変更されています。

○公式ドキュメント（一部情報が古いので、解説記事と合わせてご確認ください。）  
<https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html>  
<https://docs.oracle.com/javase/jp/8/technotes/guides/vm/gc-ergonomics.html>  
<http://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html>  
<http://docs.oracle.com/javase/jp/8/technotes/tools/windows/java.html>

○解説記事  
<http://equj65.net/tech/java8hotspot/>  
<http://www.slideshare.net/YaSuenag/metaspace>


CC BY-SA 3.0
2014-11-26T08:50:03.623
201
2015-02-04T01:25:51.263
2015-02-04T01:25:51.263
70
70
199
answer