本人微信公众号"aeolian"~

JDK常用工具

JDK的命令行工具

jps

查看正在使用的jvm机器进程号。

java -classpath %Java_HOME%/lib/tools.jar sun.tools.jps.Jps命令是等价的,即jps.exe只是这个命令的一层包装。

《JDK常用工具》

常用命令,-l显示正在运行的jar包或者软件(基于jvm),-v显示当前进程详细的jvm参数

jps -l

jps -v

《JDK常用工具》

jinfo

和jps差不多,要指定pid。显示当前jvm环境的所有配置

javap

反汇编命令,查看class字节码指令

-c是反汇编,为了显示方法内的指令,不带-c只能看方法签名,所以大部分时候都要使用-c。

-l可以查看输出行号和本地变量表,局部变量表(指令区-》虚拟机栈-》栈帧-》局部变量表)。

-v输出附加信息,可以查看常量的值。(-v包含-c -l)

javap -c -l className.class > javap_1.txt

《JDK常用工具》

字节码详解

导出内存

jmap(JVM Memory Map for Java)

jmap用于生成堆快照(heapdump)。

jmap -heap 7180     #查看堆内存配置:堆(年轻代老年代)和方法区(永久代)
jmap -dump:file=./dumpfile.dump 14320   #直接down对内存并指定文件名1.61G 
jmap -dump:format=b,file=./heap.bin 14320   #以二进制形式导入到文件
jmap -dump:live,file=./jmap.hprof 14320  #只导出正在活动的对象(没有实例的不导出)  -F强制模式
jmap -histo:live 14320|grep className  #显示什么类有多少个实例,共占了多少字节
jmap -permstat 14320   #查看永久代

jstack(JVM Stack Trace for java)

jstack用于JVM当前时刻的线程快照,又称threaddump文件,它是JVM当前每一条线程正在执行的堆栈信息的集合。

jstack -l 7180  >> stack.txt

JHAT(JVM Heap Analysis Tool)

用来分析java堆的命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言

jhat *.hprof/dump/tdump

《JDK常用工具》

https://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html

JDK可视化工具

JConsole:用来内存监控、线程监控。

JVisualVM:强大的运行监控和故障处理程序,还有性能分析等功能。对性能影响小,可直接用于生产环境。

点赞

Leave a Reply

Your email address will not be published. Required fields are marked *