真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

問題排查-jps和jstack

jps

jps 命令類似與 linux 的 ps 命令,但是它只列出系統(tǒng)中所有的 Java 應(yīng)用程序。 通過 jps 命令可以方便地查看 Java 進程的啟動類、傳入?yún)?shù)和 Java 虛擬機參數(shù)等信息。

為巍山等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及巍山網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為做網(wǎng)站、成都網(wǎng)站建設(shè)、巍山網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

問題排查-jps和jstack

參數(shù)說明:

-q:只輸出進程 ID
-m:輸出傳入 main 方法的參數(shù)
-l:輸出完全的包名,應(yīng)用主類名,jar的完全路徑名
-v:輸出jvm參數(shù)
-V:輸出通過flag文件傳遞到JVM中的參數(shù)

1、jps 顯示進程的ID 和 類的名稱
問題排查-jps和jstack

2、jps -q 只輸出進程ID,而不顯示出類的名稱
問題排查-jps和jstack

3、jps -m 可以輸出傳遞給 Java 進程(main 方法)的參數(shù)
問題排查-jps和jstack
4、jps -l 可以輸出主函數(shù)的完整路徑(類的全路徑)
問題排查-jps和jstack
5、 jps -v 可以顯示傳遞給 Java 虛擬機的參數(shù)
問題排查-jps和jstack

獲取遠程服務(wù)器 jps 信息

jps 支持查看遠程服務(wù)上的 jvm 進程信息。如果需要查看其他機器上的 jvm 進程,需要在待查看機器上啟動 jstatd 服務(wù)。

jstack

jstack是jdk自帶的線程堆棧分析工具,使用該命令可以查看或?qū)С?Java 應(yīng)用程序中線程堆棧信息。

舉例:如果CPU負荷達到100%,我們?nèi)绾闻挪椋?/p>

1、使用top命令查找到占用cpu最多的java進程。

2、使用下面的命令查看,java進程中,占用cpu最多的線程

top -Hp 23344(進程ID)

3、然后使用jstack pid查看,這個占用cpu最多的線程情況。

這里注意:
jstack命令生成的thread dump信息包含了JVM中所有存活的線程,為了分析指定線程,必須找出對應(yīng)線程的調(diào)用棧,應(yīng)該如何找?

可以看到,jstack里面,每一個線程都對應(yīng)一個nid,這個nid是16進制的。
問題排查-jps和jstack
1、把要查看的pid轉(zhuǎn)換成16進制,進行匹配即可找到要查看的線程的信息。
2、然后可以多打印幾次jstack信息,這樣找到這個線程在哪一段代碼,出現(xiàn)的頻率最高,然后查看線程狀態(tài)。

3、在dump中,線程一般存在如下幾種狀態(tài):
3.1、RUNNABLE,線程處于執(zhí)行中
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();

    }
}

問題排查-jps和jstack

問題排查-jps和jstack

兩個線程在互相等待另一個線程的鎖?。?/p>
當前題目:問題排查-jps和jstack
URL分享:http://weahome.cn/article/peiieg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部