Javaヒープサイズを動的に監視しようとしています。コードの実行プロセスで使用される最大メモリを取得する方法を知っている人はいますか?Runtime.maxMemory()はトリックを実行しますか? ?ありがとう
maxMemory()
は、Javaが使用するメモリの最大量を返します。そのため、必要なものが得られません。 totalMemory()
はあなたが探しているものです docs をご覧ください
jstat -gc <pid> <time> <amount>
jstat -gc `jps -l | grep weblogic\.Server | awk {'print $1'}` 1000 3
3サンプル1 1秒 詳細はこちら
必要に応じて、JConsoleでアプリをプロファイリングする多くの値を視覚的に表示できます。
http://docs.Oracle.com/javase/6/docs/technotes/tools/share/jconsole.html
次を使用してアプリケーションを開始します。
-Dcom.Sun.management.jmxremote
/bin/jconsole.exeを起動すると、アプリを選択できるようになります
私もそれを追加したいjmap -heap <PID>
はトリックを行います。これは、あなたがopsガイであり、Javaプロセスが使用しているヒープの量を知る必要があることを前提としています。
Java.lang.management パッケージもあります。 ManagementFactory を使用して、MemoryMXBean
インスタンスを取得します。ヒープとヒープ以外のメモリ使用量のスナップショットを返すメソッドがあります。
多分 jvmtop は一見の価値があります。これは、ヒープサイズを含むいくつかのメトリックでライブビューを提供するコマンドラインツールです。
JvmTop 0.4.1 alpha AMD64 8 cpus, Linux 2.6.32-27, load avg 0.12
http://code.google.com/p/jvmtop
PID MAIN-CLASS HPCUR HPMAX NHCUR NHMAX CPU GC VM USERNAME #T DL
3370 rapperSimpleApp 165m 455m 109m 176m 0.12% 0.00% S6U37 web 21
27338 WatchdogManager 11m 28m 23m 130m 0.00% 0.00% S6U37 web 31
19187 m.jvmtop.JvmTop 20m 3544m 13m 130m 0.93% 0.47% S6U37 web 20
16733 artup.Bootstrap 159m 455m 166m 304m 0.12% 0.00% S6U37 web 46
OpNetのapp internals xpertを使用して、負荷テスト環境と実稼働環境でヒープの使用状況とリークをリアルタイムで監視します。 prodに影響を与えないほど軽量であるため、QAから取得できない優れたデータを取得できます。また、両方の環境でメソッドとdb呼び出しのプロファイリングを行い、最適化するコード/ SQLを特定するのに役立ちます。かなりトレンドのチャートを備えた非常にクールなものですが、一気に無料ではありません。アプリに多額の資金を投入しているのであれば、投資する価値があります。
http://www.opnet.com/solutions/application_performance/appinternals-xpert.html
さらに別の無料の代替手段は、 Java-monitor を使用することです。これをご覧ください ライブデモ 。いずれかのサーバーをクリックするだけで、ヒープメモリ、非ヒープメモリ、ファイル記述子、データベースプールなどの詳細なグラフを表示できます。