美妆网站模版,网站友情链接的好处,济宁建设网站首页,注册公司代理费用命令格式 jstat -gcutil pid interval(ms) 举例#xff1a; jstat -gcutil 16361 1000 线上服务器的GC情况如下#xff1a; 参数说明如下#xff1a; S0: 新生代中Survivor space 0区已使用空间的百分比S1: 新生代中Survivor space 1区已使用空间的百分比E: 新生代已使用空…命令格式 jstat -gcutil pid interval(ms) 举例 jstat -gcutil 16361 1000 线上服务器的GC情况如下 参数说明如下 S0: 新生代中Survivor space 0区已使用空间的百分比S1: 新生代中Survivor space 1区已使用空间的百分比E: 新生代已使用空间的百分比O: 老年代已使用空间的百分比P: 永久带已使用空间的百分比 YGC: 从应用程序启动到当前发生Yang GC 的次数YGCT: 从应用程序启动到当前Yang GC所用的时间【单位秒】FGC: 从应用程序启动到当前发生Full GC的次数FGCT: 从应用程序启动到当前Full GC所用的时间GCT: 从应用程序启动到当前用于垃圾回收的总时间【单位秒】 参考 jmap
jmap命令是一个可以输出所有内存中对象的工具甚至可以将VM 中的heap以二进制输出成文本。打印出某个java进程使用pid内存内的所有‘对象’的情况如产生那些对象及其数量。
命令格式 jamp -heap pid查看java堆使用情况 jmap -histo pid查看堆内存中的对象数量大小 jmap -finalizerinfo pid打印正在等候回收的对象信息 jmap -heap 15结果
Attaching to process ID 15, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.262-b10using parallel threads in the new generation. ##新生代采用的是并行线程处理方式
using thread-local object allocation.
Concurrent Mark-Sweep GC ##同步并行垃圾回收Heap Configuration: ##堆配置情况也就是JVM参数配置的结果[平常说的tomcat配置JVM参数就是在配置这些]MinHeapFreeRatio 40 ##最小堆使用比例MaxHeapFreeRatio 70 ##最大堆可用比例MaxHeapSize 536870912 (512.0MB) ##最大堆空间大小NewSize 268435456 (256.0MB) ##新生代分配大小MaxNewSize 268435456 (256.0MB) ##最大可新生代分配大小OldSize 268435456 (256.0MB) ##老年代大小NewRatio 2 ##新生代比例SurvivorRatio 8 ##新生代与suvivor的比例MetaspaceSize 21807104 (20.796875MB) ##元空间大小 元空间本质跟永久代类似元空间与永久代最大的区别在于元空间并不在虚拟机中而是使用本机内存因此元空间大小仅受本地内存限制CompressedClassSpaceSize 1073741824 (1024.0MB) MaxMetaspaceSize 17592186044415 MBG1HeapRegionSize 0 (0.0MB)Heap Usage: ##堆使用情况【堆内存实际的使用情况】
New Generation (Eden 1 Survivor Space): ##新生代伊甸区Eden区 幸存区survior(12)空间capacity 241631232 (230.4375MB) ##伊甸区容量used 191127136 (182.27304077148438MB) ##已经使用大小free 50504096 (48.164459228515625MB) ##剩余容量79.09868869931516% used ##使用比例
Eden Space: ##伊甸区capacity 214827008 (204.875MB)used 170204912 (162.32005310058594MB)free 44622096 (42.55494689941406MB)79.22882396611882% used
From Space: ##survior1区capacity 26804224 (25.5625MB)used 20922224 (19.952987670898438MB)free 5882000 (5.6095123291015625MB)78.05569749006723% used
To Space: ##survior2 区capacity 26804224 (25.5625MB)used 0 (0.0MB)free 26804224 (25.5625MB)0.0% used
concurrent mark-sweep generation: ##老年代使用情况capacity 268435456 (256.0MB)used 146936152 (140.12923431396484MB)free 121499304 (115.87076568603516MB)54.73798215389252% used36399 interned Strings occupying 4146712 bytes.
histo的参数说明instances实例数、bytes大小、classs name类名。它基本是按照使用使用大小逆序排列的
jmap -histo:live 15num #instances #bytes class name
----------------------------------------------1: 11717 55996520 [Ljava.util.HashMap$Node;2: 142072 17500168 [C3: 20197 16779088 [B4: 141493 3395832 java.lang.String5: 104965 3358880 java.util.concurrent.ConcurrentHashMap$Node6: 50269 2495760 [Ljava.lang.Object;7: 51898 2491104 java.util.HashMap8: 20599 2270160 java.lang.Class9: 24224 2131712 java.lang.reflect.Method10: 12309 1717872 [I11: 52769 1266456 java.util.ArrayList12: 29598 1183920 java.util.LinkedHashMap$Entry13: 434 987264 [Ljava.util.concurrent.ConcurrentHashMap$Node;14: 51193 819088 java.lang.Object
...
Total 1189759 129611872
#instance 是对象的实例个数
#bytes 是总占用的字节数
#class name 对应的就是 Class 文件里的 class 的标识
B 代表 byte
C 代表 char
D 代表 double
F 代表 float
I 代表 int
J 代表 long
Z 代表 boolean
前边有 [ 代表数组 [I 就相当于 int[]
对象用 [L 类名表示
注意
1jmap -histo命令 只知道某个class name占用了那么大的内存但不知道由什么对象创建的。下一步需要将其他dump出来使用内存分析工具进一步明确它是由谁引用的、由什么对象。
2jmap -histo:live 这个命令执行JVM会先触发gc然后再统计信息
-F 强迫.在pid没有响应的时候使用-dump或者-histo参数. 在这个模式下,live子参数无效.-h | -help 打印辅助信息-J 传递参数给jmap启动的jvm. 参考
【JVM】jmap命令详解_jvm jmap_多么温暖的阳光啊的博客-CSDN博客