JVM简介(一)——内存模型
关于JVM,网上文章铺天盖地。有深有浅,有对有错。这里从我关心的角度,介绍JVM部分原理。或者说很多都是hotspot的实现原理。
一。JVM中内存情况
如下图。分成三部分:
(1)线程栈——每个线程都有对应的栈区,调用一个方法,会压入一个方法帧。
(2)堆——用于对象的空间的分配。类的实例都是在堆内存上进行分配的。下文暂称为JAVA堆
(3)方法区——方法区底层存储也是在计算机堆内存上。但是为了与JVM给对象实例分配内存的堆进行区分,才将方法区称为非堆(non-heap)
换句话说,JAVA堆与方法区都在计算机堆内存上。只不过JAVA堆是留给用户程序用的,方法区是JVM自己用的