Java JVM 仮想マシンのチューニング方法

WBOY
リリース: 2023-04-19 10:04:02
転載
1195 人が閲覧しました

jmap メモリ情報の表示

jmap histo /pid > ./log.txt: プロセスのインスタンス数、占有メモリのバイト数、およびプロセスが属するクラスを表示します

Java JVM 仮想マシンのチューニング方法

jmap -heap /pid: ヒープ情報の表示

Java JVM 仮想マシンのチューニング方法

Java JVM 仮想マシンのチューニング方法

#jmap ‐dump:format =b, file=app.hprof /pid

Java JVM 仮想マシンのチューニング方法

Java JVM 仮想マシンのチューニング方法

jvisualvm コマンドを使用して jvm ビジュアル管理インターフェイスを開始し、ダンプ ファイルをインポートします。分析: クラスのインスタンスの表示

Java JVM 仮想マシンのチューニング方法

jstack

デッドロックの分析: デッドロック コードの一部の作成

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();
    }
}
ログイン後にコピー

Java JVM 仮想マシンのチューニング方法

"Thread- 1" スレッド名; prio=5 priority=5; tid=0x0000000019aa9000 スレッド ID; nid=0x6c4 スレッドに対応するローカル スレッド ID nid; java.lang.Thread.State: BLOCKED スレッド状態

Start jvisualvm コマンド デッドロック スレッドを表示するには、対応するプロセスを選択します。

Java JVM 仮想マシンのチューニング方法

Jstack は、CPU 使用率が高いスレッドのスタック情報を分析します。

while ループを開始して、 CPU を動作させ続ける

1. top -p /pid: プロセスのリソース使用量を確認します

Java JVM 仮想マシンのチューニング方法

プロセスが CPU の使用状況を引き起こしていることは明らかです使用率はほぼ100%です。

2. H を押して、プロセス内の各スレッドが占有しているリソースを表示します

Java JVM 仮想マシンのチューニング方法

#3. ほぼ 100% 使用している PID 列を見つけます。 CPU は、スレッド tid が 5027 であることを示し、コンバータ

4 を介して 16 進数の 13a3 に変換します。jstack コマンドで jstack 5026|grep -A 10 13a3 を実行すると、スレッド tid 13a3 のスタック情報を取得できます。を実行し、原因を特定します。 CPU 使用率が 100% の実行行番号

Java JVM 仮想マシンのチューニング方法##jinfo View jvm systemparameters

jinfo -flags /pid: View jvmparameters

Java JVM 仮想マシンのチューニング方法jinfo -sysprops /pid: java

##Jstat のシステム パラメータを表示します。 ヒープ メモリの使用量とクラスの読み込み量を表示します。情報Java JVM 仮想マシンのチューニング方法

jstat -gc /pid: ガベージ コレクション統計

S0C: 最初の生存領域のサイズ (KB 単位)、S1C: 2 番目のサバイバー エリア、S0U: 最初のサバイバー エリアの使用サイズ、S1U: 2 番目のサバイバー エリアの使用サイズ、EC: エデン ガーデンのサイズ、EU: エデン ガーデンの使用サイズ、OC: 旧世代サイズ; OU: 旧世代の使用サイズ; MC: メソッド領域サイズ (メタスペース); MU: メソッド領域使用サイズ; CCSC: 圧縮クラス空間サイズ; CCSU: 圧縮クラス空間使用サイズ; YGC: 若い世代のガベージ数コレクション;YGCT: 若い世代のガベージ コレクション消費時間、単位 s;FGC: 古い世代のガベージ コレクションの数; FGCT: 古い世代のガベージ コレクション消費時間、単位 s;GCT: 合計ガベージ コレクション消費時間、単位 sJava JVM 仮想マシンのチューニング方法

jstat -gccapacity/pid: ヒープ メモリ統計

NGCMN: 新しい世代の最小容量、NGCMX: 新しい世代の最大容量、NGC: 現在の容量新世代のサイズ、S0C: 最初の生存エリアのサイズ、S1C: 2 番目の生存エリアのサイズ、EC: エデン キャンパスのサイズ、OGCMN: 旧世代の最小容量、OGCMX: の最大容量古い世代; OGC: 現在の古い世代のサイズ; OC: 現在の古い世代のサイズ; MCMN: 最小メタデータ容量; MCMX: 最大メタデータ容量; MC: 現在のメタデータ スペース サイズ; CCSMN: 最小圧縮クラス スペース サイズ; CCSMX:最大圧縮クラス スペース サイズ; CCSC: 現在の圧縮クラス スペース サイズ; YGC: 若い世代の GC の数; FGC: 古い世代の GC の数Java JVM 仮想マシンのチューニング方法

jstat -gcnew /pid: 新しい世代のガベージ コレクション統計の表示

TT: オブジェクトが新しい世代で生き残る回数、MTT: オブジェクトが新しい世代で生き残る最大回数、DSS: 予想される生存領域サイズJava JVM 仮想マシンのチューニング方法

jstat -gcnewcapacity/pid: 新世代メモリ容量の確認

S0CMX: 最大生存領域サイズ 1; S1CMX: 最大生存領域サイズ 2 ゾーンサイズ; ECMX: Eden ゾーンの最大サイズJava JVM 仮想マシンのチューニング方法

jstat -gcold /pid: 古い世代のガベージ コレクション統計の表示

##jstat -gcoldcapacity/pid: 古い世代のガベージ コレクション統計の表示年齢メモリCapacity

Java JVM 仮想マシンのチューニング方法

jstat -gcmetacapacity/pid: メタデータ スペース統計の表示

Java JVM 仮想マシンのチューニング方法

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!