JVM内存结构

Oracle官方文档

JVM体系结构

JVM内存结构_第1张图片

JVM内存结构

JVM内存结构_第2张图片
JVM内存结构_第3张图片

程序计数器

  • 保存当前执行指令的地址,一旦指令执行,程序计数器将更新到下一条指令

虚拟机栈

  • 每个线程运行时所需要的内存空间,称为虚拟机栈
  • 每个栈由多个栈帧组成,对应着每次方法调用时所占用的内存
  • 每个线程只能有一个活动栈帧,对应着当前正在执行的那个方法

栈帧

  • 局部变量表
  • 操作数栈
  • 动态链接
  • 方法返回地址

本地方法栈

  • 类似虚拟机栈,线程私有
  • 本地方法栈服务于JVM内的native方法

  • 用于存放对象的内存区域,是垃圾回收的主要区域
  • 堆是被所有线程共享的一块内存区域,在虚拟机启动时创建
  • 堆在逻辑上分为新生代和老年代,新生代分为Eden区,ServivorFrom区,ServivorTo区
  • Xms Xmx 设置堆的最小内存和最大内存
  • jps查看jvm中的进程
  • jmap查看某一个时刻的堆内存占用情况 jmap -heap 进程id
  • jconsole 图形界面Java性能分析工具

方法区

  • 存储每个类的结构
  • 例如运行时常量池、字段、方法数据,以及方法和构造函数的代码,包括用于类和实例初始化以及接口初始化的特殊方法
    JVM内存结构_第4张图片

你可能感兴趣的:(Java)