@echo off
rem 设置 java 进程id
set jp=4736
rem 设置一个时间
set backdate=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
d:
cd yrz_server
cd jdk1.7.0_02
cd bin
rem 导出对象的使用情况
jmap -histo %jp% > c:\jvm\jvm.jvmlogo%backdate%.txt
rem 导出gc次数
jstat -gcutil %jp% > c:\jvm\jvmgc.jvmlogo%backdate%.txt
jmap -histo 'jvmPid' > memory.txt
其中jvmPid为当前虚拟机进程的系统ID号,等待过后,memory.txt会按空间占用由大到小的顺序保存当前虚拟机运行中存在的对象类型,我们可以由此看出哪些类型对象占的空间和生成的数目较多,尤其是在自定义对象出现问题导致不能及时回收,这个功能是很有用的。
jstat -gcutil 'jvmPid'
会显示此刻GC的情况,其中YGC和FGC代表小GC和大GC的次数,YGCT和FGCT则代表小GC和大GC运行的占用时间,正常情况下,大GC的次数应远远小于小GC,例如我当前的系统小GC已经有10w次,而大GC只有50次,这是程序设计运行良好的表现。