实践的角度了解虚拟机内存管理的世界。
一、jdk的命令行工具
1.JPS(JVM Process Status Tool)虚拟机进程状况工具。
显示制定系统内所有的HotSpot虚拟机进程。
功能单一,但是其他jdk工具大多需要输入它查询到的LVMID来确定要监控的哪一个虚拟机进程。对于本地虚拟机进程来说,LVMID与OS的进程ID是一致的。
使用: jps [options] [hostid]
  
例子:
   
  
2.jstat (JDK Statistic Monitoring Tool) 虚拟机统计信息监控工具
用于监控虚拟机各种运行状态信息的命令行工具。可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行时数据。没有GUI界面。它是运行期定位虚拟机性能问题的首选工具。
jshat 格式:
jshat [option vimd [interval [s|ms] [count] ] ]
vmid :虚拟机唯一ID,如果本地虚拟机进程,vmid与lvmid一致,如果远程虚拟机进程,那么vmid格式应该是:
[protocol :][//] lvmid[@hostname [:port] /servername].
interval和count :查询时隔和次数。如果没有这两个参数只查询一次。
option :代表用户希望查询的虚拟机信息,主要分成三类:类装载、垃圾收集、运行期编译状况。
  
例子:
① jstat -class 15043
显示加载class的数量,及所占空间等信息
  
解释:Loaded (装载的类的数量);Bytes(装载类所占用的字节数);Unloaded(卸载类的数量);Bytes(卸载类的字节数);Time(装载和卸载类所花费的时间)
② jstat -gc 15043
可以显示gc的信息,查看gc的次数,及时间。
   
解释:
| S0C | 第一个survivor的容量-字节 | 
| S1C | 第二个survivor的容量 | 
| S0U | 第一个survivor目前已使用空间 | 
| S1U | 第二个survivor目前已使用空间 | 
| EC | Eden的容量 | 
| EU | Eden目前已使用空间 | 
| OC | Old代的容量 | 
| OU | Old代目前已使用空间 | 
| PC | Perm的容量 | 
| PU | Perm目前已使用空间 | 
| YGC | 从应用程序启动到采样时年轻代中gc次数 | 
| YGCT | 从应用程序启动到采样时年轻代中gc所用时间(s) | 
| FGC | 从应用程序启动到采样时old代(全gc)gc次数 | 
| YGCT | 从应用程序启动到采样时年轻代中gc所用时间(s) | 
| GCT | 从应用程序启动到采样时gc用的总时间(s) | 
③jstat -gccapacity 15043
可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小
 
    
| NGCMN | 年轻代(young)中初始化(最小)的大小(字节) | 
| NGCMX | 年轻代(young)的最大容量 (字节) | 
| NGC | 年轻代(young)中当前的容量 (字节) | 
| S0C | 年轻代中第一个survivor(幸存区)的容量 (字节) | 
| S1C | 年轻代中第二个survivor(幸存区)的容量 (字节) | 
| EC | 年轻代中Eden(伊甸园)的容量 (字节) | 
| OGCMN | old代中初始化(最小)的大小 (字节) | 
| OGCMX | old代的最大容量(字节) | 
| OGC | old代当前新生成的容量 (字节) | 
| OC | Old代的容量 (字节) | 
| PGCMN | perm代中初始化(最小)的大小 (字节) | 
| PGCMX | perm代的最大容量 (字节) | 
| PGC | perm代当前新生成的容量 (字节) | 
| PC | Perm(持久代)的容量 (字节) | 
| YGC | 从应用程序启动到采样时年轻代中gc次数 | 
| FGC | 从应用程序启动到采样时old代(全gc)gc次数 | 
④ jstat -gcutil 15043 统计gc信息 已用空间占总空间的比值
  
| S0 | 年轻代中第一个survivor(幸存区)已使用的占当前容量百分比 | 
| S1 | 年轻代中第二个survivor(幸存区)已使用的占当前容量百分比 | 
| E | 年轻代中Eden(伊甸园)已使用的占当前容量百分比 | 
| O | old代已使用的占当前容量百分比 | 
| P | perm代已使用的占当前容量百分比 | 
| YGC | 从应用程序启动到采样时年轻代中gc次数 | 
| YGCT | 从应用程序启动到采样时年轻代中gc所用时间(s) | 
| FGC | 从应用程序启动到采样时old代(全gc)gc次数 | 
| FGCT | 从应用程序启动到采样时old代(全gc)gc所用时间(s) | 
| GCT | 从应用程序启动到采样时gc用的总时间(s) | 
原文:http://www.cnblogs.com/zhangzongxing01/p/5562392.html