JVM面试题--实践

目录

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结尾

JVM面试题--实践_第1张图片

 堆的初始大小和最大大小。如图

jar包部署在启动参数设置

JVM面试题--实践_第2张图片

 java 和-jar是java的启动参数以及后面spring的参数

JVM 调优的参数都有哪些?

对于JVM调优,主要就是调整年轻代、老年代、元空间的内存空间大小及使用的垃圾回收器类型。官方也给出了介绍

Java HotSpot VM Options

我们重点介绍下面几个参数

设置堆空间大小

JVM面试题--实践_第3张图片

 

虚拟机栈的设置

JVM面试题--实践_第4张图片

 

年轻代中Eden区和两个Survivor区的大小比例

JVM面试题--实践_第5张图片

如果将8改成3,则配比变为2:3

 

年轻代晋升老年代阈值

JVM面试题--实践_第6张图片 

设置垃圾回收收集器

JVM面试题--实践_第7张图片

JVM 调优的工具?

JVM面试题--实践_第8张图片

 jps

JVM面试题--实践_第9张图片

jstack

JVM面试题--实践_第10张图片

 

jmap

JVM面试题--实践_第11张图片

jstat

JVM面试题--实践_第12张图片

 jconsole

JVM面试题--实践_第13张图片

 

VisualVM

JVM面试题--实践_第14张图片

 总结

JVM面试题--实践_第15张图片

Java内存泄露的排查思路

JVM面试题--实践_第16张图片

虚拟机栈,一般是递归产生的问题

方法区,一般是动态加载的类太多了

堆空间,大型对象一直存活

那如果是服务器上部署的项目,无法部署,或者部署一段时间宕机了,又应该怎么办呢?如何排查呢

JVM面试题--实践_第17张图片

 

1获取堆内存快照dump

JVM面试题--实践_第18张图片

 

2VisualVM去分析dump文件

JVM面试题--实践_第19张图片

 

3通过查看堆信息的情况,定位内存溢出问题

JVM面试题--实践_第20张图片

 

CPU飙高排查方案与思路?

1.使用top命令查看占用cpu的情况

JVM面试题--实践_第21张图片

2.查看是哪一个进程占用cpu较高

上图所示的进程为:40940

3.查看进程中的线程信息

JVM面试题--实践_第22张图片

首先,使用ps命令查看进程40940的信息,使用选项-eo pid,tid来按进程ID和线程ID排序,并显示进程和线程的CPU使用百分比。

然后,使用grep过滤出进程40940的信息,其中进程ID为40940。

最后,通过ps命令的输出结果,可以看到进程40940的CPU使用情况,包括CPU使用百分比和CPU时间等信息。

4.jstack定位到问题代码的源码行号

 

你可能感兴趣的:(jvm)