JVM性能调优面试题及详细答案.docxVIP

  • 3
  • 0
  • 约1.33万字
  • 约 13页
  • 2026-04-18 发布于河北
  • 举报

JVM性能调优面试题及详细答案

一、基础核心题(必问,考察基础掌握度)

1.说说你理解的JVM内存模型,哪些区域会发生OOM?实际工作中你遇到过哪种OOM,怎么解决的?

答案:JVM内存模型(基于HotSpot)主要分为5个区域,核心是堆、方法区,其次是虚拟机栈、本地方法栈、程序计数器,每个区域的作用和OOM场景不一样,结合实际工作说更真实:

1.程序计数器:唯一不会OOM的区域,作用是记录当前线程执行的字节码行号,线程私有,内存极小。

2.虚拟机栈:线程私有,存储栈帧(局部变量、操作数栈等),出现OOM的场景是“StackOverflowError”(栈深度超出限制,比如递归无终止条件),注意:虚拟机栈默认可以动态扩展,理论上也会OOM,但实际开发中几乎遇不到,常见的是StackOverflowError。

3.本地方法栈:和虚拟机栈类似,区别是执行本地(Native)方法,同样会出现StackOverflowError,OOM极少。

4.方法区(元空间,JDK8及以后替代永久代):存储类信息、常量、静态变量、JIT编译后的代码,会发生OOM(比如大量动态生成类,如Spring动态代理、MyBatis映射器代理,导致元空间溢出)。

5.堆:线程共享,存储对象实例和数组,是OOM最常发生的区域(java.lang.OutOfMemoryError:Java

文档评论(0)

1亿VIP精品文档

相关文档