公司内部测试题及答案.docxVIP

  • 1
  • 0
  • 约1.59万字
  • 约 35页
  • 2026-10-17 发布于未知
  • 举报

公司内部测试题及答案

一、Java核心基础(共30分)

1.(5分)请描述JVM内存模型中堆(Heap)和方法区(MethodArea)的核心区别,并说明为什么字符串常量池在JDK7之后从方法区迁移到堆中?

答案:堆是JVM中所有线程共享的内存区域,用于存储对象实例和数组,是GC的主要管理区域;方法区(JDK8后称为元空间)存储类信息、常量、静态变量、即时编译器编译后的代码等,GC在此区域的回收主要针对常量池的回收和类型卸载。JDK7将字符串常量池迁移至堆的主要原因是方法区(永久代)的内存大小受限于JVM固定大小(如-XX:MaxPermSize),容易因大量字符串常量导致内存溢出;而堆的内存管理更灵活(可通过-Xmx调整),且字符串常量作为对象更符合堆的设计定位,同时能更高效地被GC回收。

2.(5分)简述G1垃圾收集器与CMS收集器的核心差异,说明G1在处理大内存场景时的优势。

答案:G1(Garbage-First)与CMS(ConcurrentMark-Sweep)的核心差异体现在:

(1)内存划分:CMS基于分代收集(年轻代+老年代),G1将堆划分为多个大小相等的Region,逻辑保留分代概念但物理上不连续;

(2)收集策略:CMS以获取最短停顿时间为目标,优先收集老年代;G1基于“停顿预测模型”,通过统计各Region的回收价值(回收空间/时间比),优先

文档评论(0)

1亿VIP精品文档

相关文档