28

実行中に、Java プログラムはどのようにしてメモリの使用量を知ることができますか?

効率は気にしない!

4

4 に答える 4

31

VonC の答えは対話型の解決策です。プログラムで知りたい場合は、Runtime.totalMemory()を使用して JVM が使用する総量を調べ、Runtime.freeMemory()を使用してまだ使用可能な量を調べることができます (つまり、JVM に割り当てられますが、JVM内では割り当てられません(新しいオブジェクトはこのメモリを使用できます)。

これらはインスタンス メソッドです。Runtime.getRuntime()を使用して最初にシングルトン インスタンスを取得します。

于 2008-10-27T07:07:36.000 に答える
4

どこかに java1.6 があり、プログラムが Java 1.4.2、1.5、または 1.6 で実行されている場合は、visualVM セッションを起動し、アプリケーションに接続して、メモリをたどることができます (さらに多くのこと)。

Visual VMによる監視アプリケーションのイメージ

(画像は現在表示されていませんので、イラストはアプリケーションの監視を参照してください。)

于 2008-10-27T06:48:10.377 に答える
4

これは正確ではありませんが、大まかな見積もりとして、Runtime.getRuntime.freeMemory()からを引くだけRuntime.getRuntime.totalMemory()です。プログラムの最初にこれを実行して、JVM'sオーバーヘッドのメモリ使用量を把握し、後で実行の間隔をおいて実行します。

于 2008-10-27T07:01:57.993 に答える
-1

java.lang.Runtime.totalMemory() は必要な情報を提供します: http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Runtime.html

于 2008-10-27T07:00:38.557 に答える