查看正在使用的jvm机器进程号。html
java -classpath %Java_HOME%/lib/tools.jar sun.tools.jps.Jps命令是等价的,即jps.exe只是这个命令的一层包装。java
经常使用命令,-l显示正在运行的jar包或者软件(基于jvm),-v显示当前进程详细的jvm参数oracle
jps -ljvm
jps -vide
和jps差很少,要指定pid。显示当前jvm环境的全部配置工具
反汇编命令,查看class字节码指令性能
-c是反汇编,为了显示方法内的指令,不带-c只能看方法签名,因此大部分时候都要使用-c。spa
-l能够查看输出行号和本地变量表,局部变量表(指令区-》虚拟机栈-》栈帧-》局部变量表)。命令行
-v输出附加信息,能够查看常量的值。(-v包含-c -l)线程
javap -c -l className.class > javap_1.txt
字节码详解
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当前时刻的线程快照,又称threaddump文件,它是JVM当前每一条线程正在执行的堆栈信息的集合。
jstack -l 7180 >> stack.txt
用来分析java堆的命令,能够将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,并支持对象查询语言。
jhat *.hprof/dump/tdump
https://docs.oracle.com/javase/6/docs/technotes/tools/share/jmap.html
JConsole:用来内存监控、线程监控。
JVisualVM:强大的运行监控和故障处理程序,还有性能分析等功能。对性能影响小,可直接用于生产环境。