JVM内存结构详解

概述

JVM内存结构分为五个部分:堆、栈、方法区、程序计数器和本地方法栈。

核心内存区域

堆(Heap)

  • 线程共享,GC管理
  • 存储所有对象实例
  • 通过 -Xms-Xmx 调整大小

栈(JVM Stack)

  • 线程私有
  • 存储局部变量、操作数栈
  • 通过 -Xss 调整大小

方法区(Method Area)

  • 线程共享
  • 存储类信息、常量、静态变量
  • JDK8+为MetaSpace

常见问题

Q: String s=”abc” 存在哪里?
A: 常量池(方法区)

Q: 栈和堆的区别?
A: 栈线程私有速度快,堆线程共享需要GC

Q: 创建对象的内存分配流程?
A: new对象 → 堆中分配 → 初始化 → 栈中引用指向