浅谈jvm调优
如何排查jvm cpu飙升问题?
1.如果系统是运行的,可以通过命令观察一下cpu高的进程
2.通过jmap -histo pid 查看当前进程里面 按照占用内存的排序的对象实例个数以及其大小,以及其class文件。
3.jastack pid 然后直接拿到线程id,去分析具体代码
可以先设置好dump文件是否需要生成以及生成路径,如果系统发生宕机,可以根据dump文件去分析
设置的地方:java -xx:PrintFlagFinal -version 打印所有jvm相关的参数
heapDumpOnOutOfMemerryError 设置为true heapDumpPath设置路径
如果系统宕机:通过dump文件去分析,具体用jdk bin目录下的jvisualvm工具导入dump文件
常用命令:
jstack pid 查看当前进程的信息
垃圾回收器有哪些?
- Serial(串行GC)-复制
- ParNew(并行GC)-复制
- Parallel Scavenge(并行回收GC)-复制
- Serial Old(MSC)(串行GC)-标记-整理
- CMS(并发GC)-标记-清除
- Parallel Old(并行GC)--标记-整理
- G1(JDK1.7update14才可以正式商用)
说明:
- 1~3用于年轻代垃圾回收:年轻代的垃圾回收称为minor GC
- 4~6用于年老代垃圾回收(当然也可以用于方法区的回收):年老代的垃圾回收称为full GC
- G1独立完成"分代垃圾回收"
注意:并行与并发
- 并行:多条垃圾回收线程同时操作
- 并发:垃圾回收线程与用户线程一起操作
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)