jvm调优
1、jstat命令
jstat -gcutil 28893 5000查看进程gc情况
jstat -gccause 28893 5000查看进程gc情况及原因
jstat -class pid:显示加载class的数量,及所占空间等信息。
jstat -compiler pid:显示VM实时编译的数量等信息。
jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。
jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。
jstat -gcnew pid:new对象的信息。
jstat -gcnewcapacity pid:new对象的信息及其占用量。
jstat -gcold pid:old对象的信息。
jstat -gcoldcapacity pid:old对象的信息及其占用量。
jstat -gcpermcapacity pid: perm对象的信息及其占用量。
jstat -util pid:统计gc信息统计。
jstat -printcompilation pid:当前VM执行的信息。
2、jmap命令
1、jmap -histo[:live] <pid>
通过histo选项,打印当前java堆中各个对象的数量、大小。
如果添加了live,只会打印活跃的对象。
2、jmap -dump:[live,]format=b,file=/tmp/xxx.hprof <pid>
通过-dump选项,把java堆中的对象dump到本地文件,然后使用MAT进行分析。
如果添加了live,只会dump活跃的对象。
3、jmap -heap <pid>
通过-heap选项,打印java堆的配置情况和使用情况,还有使用的GC算法。
4、jmap -finalizerinfo <pid>
通过-finalizerinfo选项,打印那些正在等待执行finalize方法的对象。
5、jmap -permstat <pid>
通过-permstat选项,打印java堆永久代的信息,包括class loader相关的信息,和interned Strings的信息。