0

IDE で VM 引数を指定する場合 (この例では NetBeans を使用しています)、これらの引数はコードが IDE 自体を介して実行される場合にのみ渡されると考えるのは正しいですか?

基本的に、プログラムの実行時に VM の最小/初期ヒープ サイズが 2Gb であることを指定したいと思います。-Xms2048mコマンドを使用してこれを行うことができますが、コマンドを入力せずにこれを達成する方法があるかどうか疑問に思っています(顧客のために)。

NetBeans と Launch4J (JAR を EXE ファイルにラップ) で VM 引数を設定したとしても、プログラムが起動してランタイムの合計メモリ サイズを出力すると、常に ~120Mb になります。

私は何が欠けていますか?

編集:使用して合計メモリサイズを出力しました...

 int mb = 1024 * 1024;
 System.out.println("Max Memory: " + Runtime.getRuntime().totalMemory() / mb);

編集 2: 引数を取らずに、関連する VM 引数を使用してメイン プログラムを開始する初期化プログラムを作成できないでしょうか? 何かのようなもの...

public class Main {
    public static void main(String[] args) {
        String execName = new File(new File("").getAbsolutePath()) + "\\Program.exe";
        Runtime rt = Runtime.getRuntime();
        rt.exec("java -Xms2048m -Xmx4096m -jar " + execName);
    }
}
4

4 に答える 4

1

これを行う唯一の方法は、必要なヒープを持つプログラムの別のコピーをプログラムに開始させることです。注: エンド ユーザーは 2 GB を必要としない場合があります。

たとえば、デフォルトが 120 MB しかない場合、32 ビット Windows クライアント JVM を使用している可能性が高く、2 GB にすることはできません。32 GB 以上の容量がある場合は、2 GB 以上が必要になる場合があります。

ところで、Gb = ギガビット、Mb = メガビット、GB = ギガバイト。MB = メガバイト。

于 2013-07-24T22:32:51.850 に答える
0

割り当てられた未使用のヒープ領域が多すぎると GC が判断した場合、GC の反復後にヒープを縮小できます。おそらく、アプリケーションの起動後、毎回同じサイズが表示される方法です。

また、-Xms は最小ではなく、ヒープの初期サイズを設定しているようです

C:\Users\AStybaev>java -X
...
-Xms<size>        set initial Java heap size
...
于 2013-07-24T13:15:08.923 に答える
0

は JVM 中に設定するvalues必要があるためinitializationできません

オラクルフォーラムでの同じことに関するいくつかの有用な議論。

そしてSOで:プログラムで最大Javaヒープサイズを設定する

于 2013-07-24T13:09:50.953 に答える
0

いいえ、プログラムでヒープ サイズを変更することはできません。コマンドラインが唯一の方法です

于 2013-07-24T13:01:48.420 に答える