手记

深入理解Java虚拟机-学习笔记-1内存分区

Java虚拟机数据区域:

  1. 程序计数器 指令指示

  2. 虚拟机栈 线程私有 包括局部变量表等

  3. 方法区 加载的类信息、常量、静态变量

  4. 运行时常量 编译器生成的字面量和符号引用(不是很懂)

  5. Java堆 堆

  6. 本地方法区 native方法

  7. 直接内存 给NIO用 netty中有用到



对象的创建:

  1. 对象内存分配方法 指针碰撞(内存绝对规整) 空闲列表(内存不规整)

  2. 内存分配的线程安全问题 CAS 或者 TLAB

  3. 基本设置及init


对象的布局:

  1. 对象头 Mark Word(HashCode、GC分代年龄、锁状态、等),类型指针(指向类元数据,用以确认是哪个类的实例)

  2. 实例数据部分 各种类型的字段内容

  3. 对齐部分 不必须

对象的访问:

  1.句柄访问 堆中分配一块句柄池的内存 优势是对象移动之后不需要改变reference,只需改变句柄中的指针

  2.直接指针访问 优势 访问速度快 Sun Hotspot选择的方式


内存异常实战:待……




 

0人推荐
随时随地看视频
慕课网APP