ホームページ >Java >&#&チュートリアル >Java JVM 仮想マシンのチューニング方法
jmap histo /pid > ./log.txt: プロセスのインスタンス数、占有メモリのバイト数、およびプロセスが属するクラスを表示します
jmap -heap /pid: ヒープ情報の表示
public class DeadLockTest { private final static Object lock1 = new Object(); private final static Object lock2 = new Object(); public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { synchronized (lock1) { try { System.out.println(Thread.currentThread().getName() + ": get the lock1"); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lock2) { System.out.println(Thread.currentThread().getName() + ": get the lock2"); } } } }).start(); new Thread(new Runnable() { @Override public void run() { synchronized (lock2) { try { System.out.println(Thread.currentThread().getName() + ": get the lock2"); Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lock1) { System.out.println(Thread.currentThread().getName() + ": get the lock1"); } } } }).start(); } }
##jinfo View jvm systemparameters
jinfo -sysprops /pid: java
##Jstat のシステム パラメータを表示します。 ヒープ メモリの使用量とクラスの読み込み量を表示します。情報
S0C: 最初の生存領域のサイズ (KB 単位)、S1C: 2 番目のサバイバー エリア、S0U: 最初のサバイバー エリアの使用サイズ、S1U: 2 番目のサバイバー エリアの使用サイズ、EC: エデン ガーデンのサイズ、EU: エデン ガーデンの使用サイズ、OC: 旧世代サイズ; OU: 旧世代の使用サイズ; MC: メソッド領域サイズ (メタスペース); MU: メソッド領域使用サイズ; CCSC: 圧縮クラス空間サイズ; CCSU: 圧縮クラス空間使用サイズ; YGC: 若い世代のガベージ数コレクション;YGCT: 若い世代のガベージ コレクション消費時間、単位 s;FGC: 古い世代のガベージ コレクションの数; FGCT: 古い世代のガベージ コレクション消費時間、単位 s;GCT: 合計ガベージ コレクション消費時間、単位 s
NGCMN: 新しい世代の最小容量、NGCMX: 新しい世代の最大容量、NGC: 現在の容量新世代のサイズ、S0C: 最初の生存エリアのサイズ、S1C: 2 番目の生存エリアのサイズ、EC: エデン キャンパスのサイズ、OGCMN: 旧世代の最小容量、OGCMX: の最大容量古い世代; OGC: 現在の古い世代のサイズ; OC: 現在の古い世代のサイズ; MCMN: 最小メタデータ容量; MCMX: 最大メタデータ容量; MC: 現在のメタデータ スペース サイズ; CCSMN: 最小圧縮クラス スペース サイズ; CCSMX:最大圧縮クラス スペース サイズ; CCSC: 現在の圧縮クラス スペース サイズ; YGC: 若い世代の GC の数; FGC: 古い世代の GC の数
TT: オブジェクトが新しい世代で生き残る回数、MTT: オブジェクトが新しい世代で生き残る最大回数、DSS: 予想される生存領域サイズ
S0CMX: 最大生存領域サイズ 1; S1CMX: 最大生存領域サイズ 2 ゾーンサイズ; ECMX: Eden ゾーンの最大サイズ
jstat gc -pid コマンドを使用して、Java アプリケーションの起動パラメータを最適化できます。jstat -gc pid 1000 10 (コマンドを 1 秒ごとに、合計 10 回実行します) に追加される新しいオブジェクトの数を推定します。 1 秒あたりのエデンの面積。時間は特定の結果に基づいて調整できます。実際、最適化のアイデアは、各 Young GC 後に生き残るオブジェクトを Survivor 領域の 50% 未満にし、それらを若い世代に保持することを試みるだけです。オブジェクトが古い時代に入らないようにしてください。頻繁なフル GC による JVM パフォーマンスへの影響を避けるために、フル GC の頻度をできる限り減らすようにしてください。
JVM レベルのメモリなど、一部の古いデータの場合、メモリが時間内にクリーンアップされず、ますます多くのデータが蓄積され、時間が経つとメモリがいっぱいになることがよくあります。 gc であるため、メモリ損失のリークが発生します。 LRU データ削除戦略を実装した成熟したキャッシュ アーキテクチャ ehcache を使用できます。
以上がJava JVM 仮想マシンのチューニング方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。