多くのソースで説明されているようにjava -Xms512m
、Java マシンの最大ヒープ サイズを 512 Mb に設定するために、コマンド ラインから使用しようとしています。しかし、何かがうまくいかず、コマンドラインに次のように表示されます
そして、プログラムから直接確認したところ、
long heapMaxSize = Runtime.getRuntime().maxMemory();
heapMaxSize は 954728448 に等しく、これは約 1Gb です。
これは VM パラメータと呼ばれ、VM (JVM) を起動するときに指定する必要があります。
プログラムの実行時に最大ヒープ サイズを指定できます。
java -Xmx1024m -jar yourJar.jar
または、システムに環境変数を設定するJAVA_OPTS
と、JVM は起動時に設定を尊重します。
JAVA_OPTS="-Xmx1024m"
2 番目の質問については、Runtime.getRuntime().totalMemory() と freeMemory() とは何ですか?を参照してください。Runtime.getRuntime().maxMemory()
および友人によって返される値を明確にするためです。
-Xmx<size>
: Javaヒープの最大サイズ(Young世代+Tenured世代)-Xms<size>
: Javaヒープの初期サイズ(Young世代+Tenured世代)-Xmn<size>
: 若い世代のヒープ領域のサイズ直面している問題は とは関係ありません。コマンドが不完全で-Xms
あることが原因です。実際には、起動するクラスまたは FQN でjava
定義されたメイン クラスを含む jar を提供する必要があります。META-INF/MANIFEST.MF