1 运行时数据区域





JAVA虚拟KVM 虚拟机环境 java虚拟机模型_栈



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 直接内存