jvm系列六、windows用jdk自帶工具jps、jstack找出性能最差的代碼


一、運行程序TestGC


二、用jps找出當前應用的進程號PID
 到jdk安裝目錄的bin目錄下輸入: jps -l

PID為1264

三、啟動Process Explorer(下載地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer)
1.找到PID為1264的進程,右鍵properties
2.看到該進程的所有線程的性能排序
3.找到名字為javaw.exe(eclipse啟動)的兩個線程,線程TID:10440,10308,其他為jvm線程可能是GC線程

四、jtack工具收集該進程日志
1.命令輸入:jstack 1264 >1264.out

2.bin目錄發現,已經保存該日志文件了

3.打開1264.out看到線程運行情況,線程ID是十六進制的

4.把上面找到排名靠前的TID:10440,10308,轉成16進制為:

5.在日志中搜索該TID,找到對應代碼


大功告成!

測試類如下:

package main.sort;

import java.util.ArrayList;

import javax.print.attribute.standard.MediaName;

public class TestGC {
    
    public static void main(String[] args) {
        byte[] array=new byte[1024*64];
        ArrayList<byte[]> list=new ArrayList<byte[]>();
        new Thread(new MyThread()).start();
        
        while(true){
            list.add(array);
            try {
                Thread.sleep(200);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
    }
    

}
package main.sort;

public class MyThread implements Runnable{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        testStack();
    }
    
    public void testStack(){
        try {
            Thread.sleep(200);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        testStack();
    }
}

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM