电影网站做视频联盟做窗帘的效果图网站
1. Java 性能排查
-  
使用JPS查看当前Java进程
jps #查询需要排查的Java进程ID -  
查看Java进程内最耗费CPU的线程资源使用情况
top -H -p <Java进程pid>ps -Lfp <Java进程pid>ps -mp <Java进程pid> -o THREAD, tid, time -  
根据第1步查询出的PID,通过jstack查询Java线程所对应的jstack的Java线程ID(需要将十进制转化为十六进制)
1. printf "%x\n" <Java进程pid> #获取十六进制值 2. jstack <Java进程pid> | grep nid=0x<Java线程ID> 
2. Java常用性能排查命令
-  
jmap
Jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。
-  
使用方法
jmap -histo pid展示class的内存情况 -  
如果使用SHELL ,可采用
jmap -histo <pid> > a.log日志将其保存到文件中,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。 -  
使用
jmap -dump:live,format=b,file=outfile <pid>可以将<pid>进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具)。 -  
64位服务器或主机上使用需要使用如下方式:
jmap -J-d64 -heap pid- jmap [ option ] pid
 - jmap [ option ] executable core
 - jmap [ option ] [server-id@]remote-hostname-or-IP
 
 -  
使用
jmap -permstat <pid>打印进程的类加载器和类加载器加载的持久代对象信息,输出:类加载器名称、对象是否存活(不可靠)、对象地址、父类加载器、已加载的类大小等信息; -  
使用
jmap -heap <pid>查看进程堆内存使用情况,包括使用的GC算法、堆配置参数和各代中堆内存使用情况。 
 -  
 -  
jstat
-  
语法
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
- vmid是虚拟机ID,在Linux/Unix系统上一般就是进程ID
 - interval是采样时间间隔
 - count是采样数目
 
 -  
用法:
- jstat -gc pid #主要查看FGC、YGC的总次数和累计耗时
 - jstat -gcutil pid #功能和gc 一样,但是是百分比的形式,读取更友好
 - jstat -gccapacity pid #读取各个代区的当前容量、最大容量、当前使用量等信息
 
 -  
示例
例如下面输出的是GC信息,采样时间间隔为250ms,采样数为4:
jstat -gc 21711 250 4 
 -  
 
