JPS
JPSは、Linuxのpsコマンドのようなコマンドが、それだけで、システム内のすべてのJavaアプリケーションを示しています。あなたは簡単に情報パラメータとJava仮想マシンのパラメータを渡し、Javaプロセスのjpsコマンドによって起動クラスを見ることができます。
パラメータ:
-q:プロセス出力のみIDの
-m:出力メインメソッドパラメータ渡さ
-l:出力完全なパッケージ名、メインクラスのアプリケーション名、JARフルパスの
-v:JVM出力パラメータ
-V:ファイル配信によってフラグ出力JVMのパラメータ
1、JPS IDは、プロセスの名前とタイプを表示します
図2に示すように、クラスの名前を表示せずにのみプロセスID JPS -q出力、
-m出力(mainメソッド)Javaプロセスに渡されたパラメータもよい3、JPS
-l出力フルパス(フルパスなど)主な機能月4、JPS
5は、JPS -vパラメータは、Java仮想マシンのディスプレイに渡すことができます
JPSの情報を取得するために、リモートサーバー
JPSは、JVMプロセスにリモートサービスに関する情報をサポートしています。あなたが他のマシン上のJVMプロセスを表示する必要がある場合は、表示されるように、マシン上でのjstatdサービスを開始する必要があります。
jstack
jstackは、JDK独自のスレッドスタック解析ツールで、Javaアプリケーション・スレッド・スタック情報を表示したり、エクスポートするコマンドを使用します。
例:CPU負荷が100%に達した場合、どのように我々は解決しますか。
1、最も占有CPUのjavaプロセスを見つけるためにtopコマンド。
2、CPUスレッドの大半を占め、ビューにjavaプロセスを次のコマンドを使用します。
top -Hp 23344(进程ID)
3、その後、占有CPUスレッド状況のほとんどをjstack pidのビューを使用します。
ここでの注意:
jstackコマンドはすべての生きているJVMのスレッドに含まれるスレッドダンプ情報を生成し、指定したスレッドを分析するために、スレッドは、対応するコールスタックを見つけなければならない、そしてそれがどのように見えるべきか?
あなたは、NIDは16進数で、各スレッドは、NIDに対応し、内部jstack、見ることができます。
1、進に表示するには、PIDを変換するために、あなたが見たいスレッドを一致させるための情報を見つけることができます。
2、その後、あなたは数回jstack情報以上のものを印刷するので、このスレッドその後、コードの一部、表示され、スレッドの状態を表示して最高周波数を見つけることができます。
3は、ダンプに、スレッドは通常存在し、いくつかの状態:
3.1、RUNNABLEは、実行スレッドがある
3.2、BLOCKED、スレッドがブロックされ
たスレッドが待っている、3.3、WAITINGを
4、例えば:デッドロック
package com.jane;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
public class Main {
public static void main(String[] args) {
ReentrantLock lock1 = new ReentrantLock();
ReentrantLock lock2 = new ReentrantLock();
Thread t1 = new Thread() {
@Override
public void run() {
try {
lock1.lock();
TimeUnit.SECONDS.sleep(1);
lock2.lock();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
Thread t2 = new Thread() {
@Override
public void run() {
try {
lock2.lock();
TimeUnit.SECONDS.sleep(1);
lock1.lock();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
};
t1.setName("mythread1");
t2.setName("mythread2");
t1.start();
t2.start();
}
}
2つのスレッドがそれぞれ別のスレッドを待ってロック!!