目录
JVM 调优的参数可以在哪里设置参数值
在idea设置的都是临时参数,更多的是指的是项目部署的时候,参数设置的方式
war包部署在tomcat中设置
.sh指的是linux环境下,如果是windows是以.bat结尾
堆的初始大小和最大大小。如图
jar包部署在启动参数设置
java 和-jar是java的启动参数以及后面spring的参数
JVM 调优的参数都有哪些?
对于JVM调优,主要就是调整年轻代、老年代、元空间的内存空间大小及使用的垃圾回收器类型。官方也给出了介绍
我们重点介绍下面几个参数
设置堆空间大小
虚拟机栈的设置
年轻代中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定位到问题代码的源码行号