Jvm运行时数据区

公開日: 2019-12-01 12:12 446文字 3 min read

issyuu avatar

issyuu

喧噪から離れた「湖心小築(Lakeheart Retreat)」。静かな水辺で紡ぐ、思考と日常の断片

好记性不如烂笔头.

前言

  • 类在加载过程中, 根据类别分布在不同的区域

运行时数据区

虚拟机-内存分布
虚拟机-内存分布
  • 运行时数据区大体分为线程共享数据区: 随着虚拟机启动而创建, 退出而销毁, 为所有子线程共享; 线程独享数据区: 随着线程启动与结束而创建与销毁, 每个线程间隔离.
    • 线程共享数据区
      • 堆: 存放对象实例, 数组
        • 新生代
          • Eden
          • From(Survivor0)
          • To(Survivor1)
        • 老年代
      • 元数据区(方法区|永生带): 采用**堆外内存(本地内存)**静态变量, 静态方法, 常量, 成员方法, 类模板, 类信息(版本号…)
    • 线程独享数据区
        • 局部变量表: 基础类型变量(byte, char, short, int, long, float, double, boolean), 对象句柄(方法参数, 局部变量)
        • 操作数栈
        • 动态链接
        • 返回地址
      • 本地方法栈: 本地 native 的内存模型(非 Java 方法)
      • 程序计数器(PC 寄存器): 当前线程所执行字节码的行号指示器, 通过改变该计数器来选取下一条将执行的字节码指令

  • 堆初始容量默认为 1/64 物理内存 (-Xms -XX
    )
  • 堆最大容量默认为 1/ 4 物理内存 (-Xmx -XX
    )
  • 新生代初始容量默认为堆初始容量 1/3 (-Xmn -XX
    )
  • 新生代最大容量默认为堆最大容量 1/3 (-XX
    )
  • 老年代初始容量默认为堆初始容量 2/3 (-XX
    )

总结

  • 元数据区: 存放类模板; 堆: 存放类实例; 栈: 函数计算

引用

気に入ったならばコメントを残してくださいね~

© 2020 - 2026 issyuu @Lakeheart Retreat
Powered by theme astro-koharu · Inspired by Shoka