目录
JVM 调优的参数可以在哪里设置参数值
war包部署在tomcat中设置
jar包部署在启动参数设置
JVM 调优的参数都有哪些?
设置堆空间大小
虚拟机栈的设置
年轻代中Eden区和两个Survivor区的大小比例
年轻代晋升老年代阈值
设置垃圾回收收集器
JVM 调优的工具?
jps
jstack
jmap
jstat
jconsole
VisualVM
总结
Java内存泄露的排查思路
1获取堆内存快照dump
2VisualVM去分析dump文件
3通过查看堆信息的情况,定位内存溢出问题
CPU飙高排查方案与思路?
1.使用top命令查看占用cpu的情况
2.查看是哪一个进程占用cpu较高
3.查看进程中的线程信息
4.jstack定位到问题代码的源码行号
JVM 调优的参数可以在哪里设置参数值
在idea设置的都是临时参数,更多的是指的是项目部署的时候,参数设置的方式
war包部署在tomcat中设置
.sh指的是linux环境下,如果是windows是以.bat结尾
堆的初始大小和最大大小。如图
jar包部署在启动参数设置
java 和-jar是java的启动参数以及后面spring的参数
JVM 调优的参数都有哪些?
对于JVM调优,主要就是调整年轻代、老年代、元空间的内存空间大小及使用的垃圾回收器类型。官方也给出了介绍
Java HotSpot VM Options
我们重点介绍下面几个参数
设置堆空间大小
虚拟机栈的设置
年轻代中Eden区和两个Survivor区的大小比例
如果将8改成3,则配比变为2:3
年轻代晋升老年代阈值
设置垃圾回收收集器
JVM 调优的工具?
jps
jstack
jmap
jstat
jconsole
VisualVM
总结
Java内存泄露的排查思路
虚拟机栈,一般是递归产生的问题
方法区,一般是动态加载的类太多了
堆空间,大型对象一直存活
那如果是服务器上部署的项目,无法部署,或者部署一段时间宕机了,又应该怎么办呢?如何排查呢
1获取堆内存快照dump
2VisualVM去分析dump文件
3通过查看堆信息的情况,定位内存溢出问题
CPU飙高排查方案与思路?
1.使用top命令查看占用cpu的情况
2.查看是哪一个进程占用cpu较高
上图所示的进程为:40940
3.查看进程中的线程信息
首先,使用ps命令查看进程40940的信息,使用选项-eo pid,tid来按进程ID和线程ID排序,并显示进程和线程的CPU使用百分比。
然后,使用grep过滤出进程40940的信息,其中进程ID为40940。
最后,通过ps命令的输出结果,可以看到进程40940的CPU使用情况,包括CPU使用百分比和CPU时间等信息。
4.jstack定位到问题代码的源码行号