内存、cpu
linux命令
top 展示了机器的cpu、内存、swap区情况
kill -3 pid 会生成对应进程的各线程的 java 调用栈信息以及内存情况。注意tomcat做了重定向文件,可以打印在tomcat_catlina.log.默认在 /proc/pid/cwd目录下
1、原生jdk命令
jmap 内存
jstat 配合查看内存、cpu、gc问题
jstack cpu
jcmd、jhat、jinfo
2、arthas
dashboard 查看线程、内存、gc情况
thread 查看线程数量、线程状态
3、MemoryAnalyze
4、docker相关命令 (注意 非堆区域内存占用较大会导致linux触发OOMkiller)
参考:https://blog.csdn.net/qui910/article/details/125315062
docker stats | grep *** 可以查看容器的cpu、内存统计情况
docker inspect 容器id 可以查看OOMKiller 是否为true
docker top 容器id
docker ps -a | grep *** 查看所有相关的容器。包括被重拉的 可以查看137码
5、 jvm参数 (参考: https://blog.csdn.net/fedorafrog/article/details/104503740)
堆内存
年轻代【Eden(生成区)、Survivor(幸存区)】
幸存区划分:FromSpace(s0)ToSpace(s1)默认8:1 可调整16:1
老年代
-XX:SurvivorRatio=8
-Xmn 设置年轻代大小
-Xms 设置堆的最小空间大小。
-Xmx 最大堆内存 建议与Xms一致 减少GC次数
非堆内存
code_cache 默认240M (当jit代码达到指定次数,此区域会增加)
compressed_class_space
-XX:MaxMetaspaceSize 最大元数据
-XX:MaxDirectMemory 最大直接内存
-Xss522k 依据不同系统默认值不通 默认1M 越小支持创建更多的线程数
6 GC的次数、影响与查看
7 cpu高与线程死锁
top -H -p pid
printf '%x\n' nid 此处区别与toppid
jstack pid | grep 'nid'
jstack -F pid 文章来源:https://www.toymoban.com/news/detail-437841.html
kill -3 pid文章来源地址https://www.toymoban.com/news/detail-437841.html
到了这里,关于JAVA性能问题分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!