- 5
- 0
- 约8.67千字
- 约 20页
- 2026-04-02 发布于未知
- 举报
高级java工程师考试试题及答案
一、基础原理与JVM
1.简述JVM内存区域划分及各区域的作用,说明哪些区域可能发生OOM(内存溢出),并列举典型场景。
JVM内存区域分为:
-程序计数器:记录当前线程执行的字节码行号,线程私有,无OOM风险。
-Java虚拟机栈:存储栈帧(局部变量表、操作数栈等),线程私有。若线程请求的栈深度超过虚拟机允许值,抛出StackOverflowError;若动态扩展时无法申请内存,抛出OOM。典型场景:递归调用未正确终止(如无限递归)。
-本地方法栈:与虚拟机栈类似,服务于本地方法,HotSpot虚拟机将其与虚拟机栈合并,OOM场景同上。
-Java堆:对象实例及数组存储区域,线程共享。当对象实例过多且无法被GC回收时发生OOM。典型场景:内存泄漏(如长生命周期对象持有短生命周期对象引用)、大对象分配(如创建远超堆大小的数组)。
-方法区(元空间/永久代):存储类信息、常量、静态变量等。JDK7前为永久代(基于堆),JDK8后为元空间(基于本地内存)。当加载的类过多(如动态代理生成大量类)或常量池过大时,元空间可能OOM(本地内存不足)。
2.描述类加载的全过程,说明双亲委派模型的工作机制及打破该模型的典型场景。
类加载过程包括加载、验证、准备、解析、初始化五个阶段:
-加载:通过类加载器获取.
原创力文档

文档评论(0)