Skip to content

JVM内存模型 ​

题目 ​

说说 JVM 的内存模型。

参考答案 ​

如果这里说的是 JVM 运行时内存区域,通常包括:

  • 堆
  • 虚拟机栈
  • 本地方法栈
  • 程序计数器
  • 方法区 / 元空间

如果面试官追问 Java 内存模型 JMM,就要切换到“主内存、工作内存、可见性、有序性、原子性”那一层,不要把两者混在一起。

回答展开 ​

  • 这题最重要的是先和面试官确认,你说的是 JVM 运行时内存区域,还是 Java 内存模型 JMM,这两个名字很像,但考点完全不同。
  • 如果是运行时内存区域,回答时可以按线程私有和线程共享来拆:程序计数器、虚拟机栈、本地方法栈是线程私有;堆和方法区/元空间是线程共享。
  • 真正线上排查问题时,这个知识点会直接影响定位方向。比如堆内存打满、元空间打满、栈溢出、直接内存泄漏,处理手段都不一样。

实际场景 ​

比如某个服务频繁报 OOM,先要判断是堆内存问题、元空间问题还是栈溢出。只有把 JVM 内存区域分清楚,后面看 dump、看 GC 日志、调参数才不会跑偏。

努力工作 享受生活