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

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

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定位到问题代码的源码行号

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值