您的位置:首页 > 职场人生

最高频率JVM面试题

2020-12-13 21:40 876 查看

对于中高级面试的时候,不仅要问你一些基本型的概念,比如说:JVM运行时数据区有哪些?虚拟机栈是干什么的?内存是如何分配的?类加载是怎么加载的?垃圾回收算法有哪些?线程与虚拟机栈有什么关系?等等....,

上面的问题看看书也许就ok了,但是下面这两个问题,可能你在很多书上不一定能看得到,就算看得到估计也是零碎的:

 

CPU持续飙高,该如何处理?

  1. top 查看当前 CPU 情况,找到占用 CPU 过高的进程 PID=12677。

  2. top -H -p12677 找出两个 CPU 占用较高的线程,记录下来 PID=3246, 3246转换为十六进制。

  3. jstack -l 12677> temp.txt 打印出当前进程的线程栈。

  4. 查找到对应于第二步的两个线程运行栈,分析代码

OOM 异常如何排查?

  1. 使用 top 指令查询服务器系统状态。

  2. ps -aux|grep java 找出当前 Java 进程的 PID。

  3. jstat -gcutil pid interval 查看当前 GC 的状态。

  4. jmap -histo:live pid 可用统计存活对象的分布情况,从高到低查看占据内存最多的对象。

  5. jmap -dump:format=b,file= 文件名 [pid] 利用 Jmap dump。

  6. 使用性能分析工具对上一步 dump 出来的文件进行分析,工具有 MAT 等。

 MAT工具的使用案例请阅读

在面试的时候如果能说清楚上面两点也算是面试加分项。真正解决问题的时候会考虑的更加全面一些,比如说:内存参数的配置是否合理?老年代和新生代比例是不是不合理?怎么才合理?等等。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: