jvm内存模型

一、内存区域

  1. 直接内存
  2. 方法区
    • 1.8之前实现是永久代,在堆中。1.8之后改成了元数据空间,放到了直接内存。
    • 运行时常量池也在方法区,字符串常量池1.7之后拆分出来被放到了堆中。
  3. 程序计数器
  4. 本地方法栈

二、对象

  1. 创建过程
    1. 类加载检查
    2. 分配内存
    3. 初始化零值
    4. 设置对象头
    5. 执行init方法
  2. 内存布局
    1. 对象头
      • 运行时数据,包括哈希码,gc分代年龄,锁状态标志灯
      • 类型指针,指向对象类的元数据
    2. 实例数据
    3. 对齐填充
  3. 访问定位
    • 句柄方式
      多走一次句柄,句柄指向对象和类
    • 直接指针
      对象中存一个类指针

三、其他

你可能感兴趣的:(jvm内存模型)