1.各个内存区域可能出现的ERROR分析
https://blog.csdn.net/z69183787/article/details/75530650
2.逃逸分析和栈上分配 标量替换
https://www.jianshu.com/p/3ecc626ce304
https://www.jianshu.com/p/702eddcac053
3.jvm即时编译器
https://www.cnblogs.com/linghu-java/p/8589843.html
4.jvm调优相关
4.1查询jvm运行时参数:java -XX:+PrintFlagsFinal -version或者java -XX:+PrintFlagsFinal -version | grep ...
4.2堆溢出时导出dump文件的参数 -XX:+HeapDumpOnOutOfMemoryError
导出dump文件的路径指定参数: -XX:+HeapDumpPath=D:\TMP\...
5.调优工具
查询java进程:jps -l
生成dump文件:jmap -dump:format=b,file=xxx.bin pid
![](https://img.haomeiwen.com/i24322962/1fbbca5308181fb4.png)
查看垃圾收集情况:jstat -gcutil pid intervalMills
E(占用Eden区内存的比例6.2%)YGC(新生代GC次数)YGCT(新生代GC累计耗时时间) GCT(gc总耗时)
![](https://img.haomeiwen.com/i24322962/2b7edf3435900c6c.png)
查询gc日志:https://blog.csdn.net/liao0801_123/article/details/83022647
快速定位JVM中消耗CPU最多的线程
a.定位最耗CPU的进程:top 命令
![](https://img.haomeiwen.com/i24322962/c93dce1069c6cb5f.png)
b.定位这个进程中最耗CPU的线程:top -Hp 2103
![](https://img.haomeiwen.com/i24322962/7cb0026f930c8c3a.png)
c.查看线程信息:jstack 2103|grep 0x850 -A -30 (jstack 进程id | grep 16进制线程ID -A -30)
其中0x850是2128转换成16进制后的数字。
![](https://img.haomeiwen.com/i24322962/c98eb531af053d8f.png)
VisualVM的应用
https://blog.csdn.net/xunmengyou1990/article/details/107891114
SPI打破双亲委派:https://www.cnblogs.com/gllegolas/p/11760811.html
垃圾收集器
https://www.cnblogs.com/super-jing/p/10795099.html
网友评论