JDK的命令行工具
jps
查看正在使用的jvm机器进程号。
java -classpath %Java_HOME%/lib/tools.jar sun.tools.jps.Jps
命令是等价的,即jps.exe只是这个命令的一层包装。
常用命令,-l显示正在运行的jar包或者软件(基于jvm),-v显示当前进程详细的jvm参数
jps -l
jps -v
jinfo
和jps差不多,要指定pid。显示当前jvm环境的所有配置
javap
反汇编命令,查看class字节码指令
-c是反汇编,为了显示方法内的指令,不带-c只能看方法签名,所以大部分时候都要使用-c。
-l可以查看输出行号和本地变量表,局部变量表(指令区-》虚拟机栈-》栈帧-》局部变量表)。
-v输出附加信息,可以查看常量的值。(-v包含-c -l)
javap -c -l className.class > javap_1.txt
导出内存
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可视化工具
JConsole:用来内存监控、线程监控。
JVisualVM:强大的运行监控和故障处理程序,还有性能分析等功能。对性能影响小,可直接用于生产环境。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17805.html