mirror of
https://gitee.com/52itstyle/spring-boot-seckill.git
synced 2025-12-30 10:22:26 +00:00
更新 JVM 线上故障排查基本操作.md
This commit is contained in:
@@ -23,7 +23,8 @@
|
||||
通过刚刚转换的 16 进制数字从堆栈信息里找到对应的线程堆栈。就可以从该堆栈中看出端倪。
|
||||
从楼主的经验来看,一般是某个业务死循环没有出口,这种情况可以根据业务进行修复。还有 C2 编译器执行编译时也会抢占 CPU,什么是 C2 编译器呢?当 Java 某一段代码执行次数超过 10000 次(默认)后,就会将该段代码从解释执行改为编译执行,也就是编译成机器码以提高速度。而这个 C2 编译器就是做这个的。如何解决呢?项目上线后,可以先通过压测工具进行预热,这样,等用户真正访问的时候,C2 编译器就不会干扰应用程序了。如果是 GC 线程导致的,那么极有可能是 Full GC ,那么就要进行 GC 的优化。
|
||||
|
||||
2. 内存问题排查
|
||||
# 2. 内存问题排查
|
||||
|
||||
说完了 CPU 的问题排查,再说说内存的排查,通常,内存的问题就是 GC 的问题,因为 Java 的内存由 GC 管理。有 2 种情况,一种是内存溢出了,一种是内存没有溢出,但 GC 不健康。
|
||||
|
||||
内存溢出的情况可以通过加上 -XX:+HeapDumpOnOutOfMemoryError 参数,该参数作用是:在程序内存溢出时输出 dump 文件。
|
||||
|
||||
Reference in New Issue
Block a user