共计 2108 个字符,预计需要花费 6 分钟才能阅读完成。
// https://www.jianshu.com/p/1e6…
// https://blog.csdn.net/weixin_…
-XX:NativeMemoryTracking=summary
jcmd pid VM.native_memory
类的追踪:
增加 jvm 参数:-verbose:class
堆内存追踪:
1:dump 进去文件,应用 jvisualvm.exe 或者其余工具查看文件。jvm 命令:jmap -dump:format=b,file=outfile {pid}
2:jmap -histo:live {pid}(会触发 fullgc)/ jmap -histo {pid} 查看内存对象的散布
3:jmap -heap {pid}
元空间类加载状况追踪:
1:jstat -class {pid}
2:jmap -clstats {p
元空间内存应用状况追踪:
1: 增加 jvm 参数 -XX:NativeMemoryTracking=summary
jcmd {pid} VM.native_memory
整个 memory 次要蕴含了 Java Heap、Class、Thread、Code、GC、Compiler、Internal、Other、Symbol、Native Memory Tracking、Arena Chunk 这几局部;其中 reserved 示意利用可用的内存大小,committed 示意利用正在应用的内存大小
Java Heap 局部示意 heap 内存目前占用了多少 MB;Class 局部示意曾经加载的 classes 多少个,其 metadata 占用了多少 MB;Thread 局部示意目前有多少个线程,占用了多少 MB;Code 局部示意 JIT 生成的或者缓存的 instructions 占用了多少 MB;GC 局部示意目前曾经占用了多少 MB 的内存空间用于帮忙 GC;Code 局部示意 compiler 生成 code 的时候占用了多少 MB;Internal 局部表示命令行解析、JVMTI 等占用了多少 MB;Other 局部示意尚未归类的占用了多少 MB;Symbol 局部示意诸如 string table 及 constant pool 等 symbol 占用了多少 MB;Native Memory Tracking 局部示意该性能本身占用了多少 MB;Arena Chunk 局部示意 arena chunk 占用了多少 MB
gc 追踪:
jstat -gc {pid}
cpu 耗时 / 线程信息追踪:
1:应用查看 jmc.exe
增加 jvm 参数:
-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,repository={filePath},maxage=6m,settings=default
2:top -H -p {pid} 获取过程的线程资源占用信息(无需重启)
jstack pid >> xx.txt 获取过程的线程信息
java -jar jcaxx.jar。在软件里关上 a,就能够看到线程栈的状况(https://www.ibm.com/support/p… 能够下载 开源工具)
堆外内存追踪
1:cat /proc/{pid}/smaps
Size:示意该映射区域在虚拟内存空间中的大小。
Rss:示意该映射区域以后在物理内存中占用了多少空间
Shared_Clean:和其余过程共享的未被改写的 page 的大小
Shared_Dirty:和其余过程共享的被改写的 page 的大小
Private_Clean:未被改写的公有页面的大小。
Private_Dirty:已被改写的公有页面的大小。
Swap:示意非 mmap 内存(也叫 anonymous memory,比方 malloc 动态分配进去的内存)因为物理内存不足被 swap 到替换空间的大小。
Pss:该虚拟内存区域平摊计算后应用的物理内存大小(有些内存会和其余过程共享,例如 mmap 进来的)。比方该区域所映射的物理内存局部同时也被另一个过程映射了,且该局部物理内存的大小为 1000KB,那么该过程摊派其中一半的内存,即 Pss=500KB。
2 pmap -x {pid}
Address: start address of map 映像起始地址
Kbytes: size of map in kilobytes 映像大小
RSS: resident set size in kilobytes 驻留集大小
Dirty: dirty pages (both shared and private) in kilobytes 脏页大小
Mode: permissions on map 映像权限: r=read, w=write, x=execute, s=shared, p=private (copy on write)
Private_Dirty:已被改写的公有页面的大小。
3:google-perftools 它的原理是在 java 利用程序运行时,当调用 malloc 时换用它的 libtcmalloc.so,这样就能做一些统计了它的原理是在 java 利用程序运行时,当调用 malloc 时换用它的 libtcmalloc.so,这样就能做一些统计了。