文章目录
  1. 1. jvm分析笔记
  2. 2. 线程总数
  3. 3. 线程的状态及数量

jvm分析笔记

  • jmap

jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。

  命令:jmap -dump:format=b,file=heap.bin [pid]

dump出活动的堆信息: 

jmap -dump:live,format=b,file=heap.bin [pid]

jmap -heap pid : 查看堆的使用状况信息

jmap -histo:live pid| less :堆中活动的对象以及大小

  • jstack

jstack是用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内存每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因。

jstack ( 查看jvm线程运行状态,是否有死锁现象等等信息);

命令:jstack -l [pid]

1.jstack 线程信息以日志输出到文件将日志输出到 js.log 文件中

    jstack 11 >js.log

2.统计

线程总数

    grep “Thread.State” js.log | wc -l

线程的状态及数量

grep “java.lang.Thread.State” js.log | awk ‘{print$2$3$4$5}’|uniq -c

  • jstat

//gc 情况统计打印,每1秒钟打印一次

jstat -gcutil [pid] 1000

jstat -gcpermcapacity pid: perm对象的信息及其占用量。

//获取类加载所占用的资源信息

jstat -class [pid]

  • jinfo

  • JConsole

查询当前活动中的线程数:

命令:jps

返回进程id:12

则执行:

    ls /proc/12/task | wc -l

返回:

     705个活动线程

查看占用操作系统内存情况:

1, jps

2, ps aux | egrep “MEM|12”

1.jstack 日志输出到文件将日志输出到 js.log 文件中jstack 1 >js.log12.统计# 线程总数grep “Thread.State” js.log | wc -l# 线程的状态及数量grep “java.lang.Thread.State” js.log | awk ‘{print$2$3$4$5}’|uniq -c

jdk1.8 内存使用状态快速求和方法:

 jstat -gc 12| grep -v S0C | awk ‘{s=$3+$4+$6+$8+$10+$12} END {print s}’

堆内存(S0U+S1U+EU+OU)+元数据内存(MU)+已编译class占用内存(CSSU)

文章目录
  1. 1. jvm分析笔记
  2. 2. 线程总数
  3. 3. 线程的状态及数量