【jstack、jps命令使用】排查死锁

“jps -v” 命令:可以显示传递给 Java 虚拟机的参数(java启动参数、内存分配大小等信息)。

打印java服务进程ID

 "jps" 命令:查看所有java服务进程ID  
 打印:    
   3200 ApplicationTest    
   2968 Launcher

打印堆信息

"jmap -heap 进程ID"命令:打印堆信息

 使用案例说明:排查内存溢出、泄漏;排查是否存在内存溢出:第一次打印堆空间的占用大小used、然后执行GC回收后,再次执行"jmap -heap 进程ID"命令查看堆空间的used是否被清空
 打印:
    Eden Space:                // Eden区
    capacity = 34078720 (32.5MB)                   // 总空间大小
    used     = 16630280 (15.859870910644531MB)     // 已使用空间
    free     = 17448440 (16.64012908935547MB)      // 剩余空间
    48.79960280198317% used
    From Space:                // From区
    capacity = 5242880 (5.0MB)
    used     = 0 (0.0MB)
    free     = 5242880 (5.0MB)
    0.0% used
    To Space:                  // To区
    capacity = 5242880 (5.0MB)
    used     = 0 (0.0MB)
    free     = 5242880 (5.0MB)
    0.0% used
    PS Old Generation          // 老年代
    capacity = 89653248 (85.5MB)
    used     = 0 (0.0MB)
    free     = 89653248 (85.5MB)
    0.0% used

输出java进程的线程快照-排查死锁

"jstack 进程ID > thread.txt" 命令:输出该进程的线程快照到thread.txt文件中。
该命令用于排查死锁问题,首先需要通过“top”命令查找CPU占用高的进程“PID”,
然后通过“ps -mp 进程PID -o THREAD,tid,time”命令定位到占用CPU占用率高的线程“TID”,
然后将10进制的TID转为16进制,用于在thread.txt文件中找到占用较高的线程所在位置
(在thread.txt文件中全局搜索转为16进制的TID即可定位到具体位置)

猜你喜欢

转载自blog.csdn.net/qq_36881887/article/details/126231719