JVM 内存分析 常用Linux命令

top命令,P:CPU排序,M:内存排序

 

 

查询项目进程ID

ps -ef | grep target

 

[lhadmin@BJTVMYTEAM-2 logs]$ jstack 13359
13359: well-known file /tmp/.java_pid13359 is not secure: file should be owned by the current user (which is 1001) but is owned by 1002
[lhadmin@BJTVMYTEAM-2 logs]$ sudo -i
[root@BJTVMYTEAM-2 ~]# jstack 13359
13359: well-known file /tmp/.java_pid13359 is not secure: file should be owned by the current user (which is 0) but is owned by 1002
[root@BJTVMYTEAM-2 ~]# sudo -u appuser jstack 13359

 

 

 

 导出线程堆栈信息到文件中/tmp/20210329test.txt,并下载

[root@BJTVMYTEAM-2 tmp]#sudo -u appuser jstack 13359 >/tmp/20210329test.txt 
[root@BJTVMYTEAM-2 tmp]# ll | grep test
-rw-r--r-- 1 root    root     72151 Mar 29 19:02 20210329test.txt
[root@BJTVMYTEAM-2 tmp]# sz 20210329test.txt 

使用IBM Java线程和监视器转储分析器(TMDA)进行线程分析

下载地址:https//public.dhe.ibm.com/software/websphere/appserv/support/tools/jca/jca469.jar

在IBM Thread and Monitor Dump Analyzer for Java工具中,请求线程可分为以下几种状态:
  1.死锁,Deadlock(重点关注)
  2.执行中,Runnable(重点关注)
  3.等待资源,Waiting on condition(重点关注)
  4.等待监控器检查资源,Waiting on monitor
  5.暂停,Suspended
  6.对象等待中,Object.wait()
  7.阻塞,Blocked(重点关注)
  8.停止,Parked
  Deadlock:死锁线程:一般指多个线程调用间,进入相互资源占用,导致一直等待无法释放的情况。
  Runnable:一般指该线程正在执行状态中,该线程占用了资源,正在处理某个请求,有可能正在传递SQL到数据
  库执行,有可能在对某个文件操作,有可能进行数据类型等转换。
  Waiting on condition:等待资源,如果堆栈信息明确是应用代码,则证明该线程正在等待资源,一般是大
  量读取某资源,且该资源采用了资源锁的情况下,线程进入等待状态,等待资源的读取。又或者,
  正在等待其他线程的执行等。
  Blocked:线程阻塞,是指当前线程执行过程中,所需要的资源长时间等待却一直未能获取到,被容器的线程管

 查看堆内存中对象信息

sudo -u appuser jmap -histo 13359 | head -n20

 

posted @ 2021-03-29 19:13  fycn01  阅读(1821)  评论(0编辑  收藏  举报