1 运行时数据区域
GC内存模型
1.1 程序计数器
如果线程正在执行的是一个Java方法,该计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是Native方法,该计数器值则为空(Undefined)。
程序计数器的内存区域是唯一一个没有OutOfMemoryError情况的区域。
1.2 虚拟机栈(VM Stack)
虚拟机栈也是线程私有的,生命周期与线程相同。 通常说的堆(Heap)内存、栈(Stack)内存中,栈就是现在所介绍的虚拟机栈。
1.3 本地方法栈(Native Method Stack)
1.4 堆(Heap)
1.5 方法区(Method Area)
方法区 既可固定大小,也可动态扩展,当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。
运行期间也可能将新的常量放入运行时常量池中,如String类public native
1.6 直接内存