JVM摘要--Heap Area和Method Area
Heap(堆)
所有的JVM线程共享一个Heap。 Heap中存放的是所有类的instances和数组。Heap在VM启动时就创建了,堆中的存储空间是由一个自动空间管理系统(也称之为垃圾回收器)来负责回收的;对象从不明确的被释放(Objects are never explicitly deallocated.),JVM没有强调用何种垃圾回收技术。堆的尺寸也可以是固定或者动态增减的。堆中的内存空间不需要连续。堆的初始尺寸,最大最小尺寸值也是可以设定的。
堆中的异常:
如果请求的堆空间大于automatic Storage management system允许的范围,则抛出OutOfMemoryError
Method Area(方法区)
JVM中含有一个在多个JVM线程中间共享的方法区,方法区是连续存放的。
在方法区中存放着每个类的结构信息,包括运行时的常量池(constant pool),类属性和方法数据,以及这些方法的代码和构造函数(包括实例初始化接口初始化和类中会用到的专用方法)。
方法区也是在VM启动后就创建了。尽管方法区逻辑上属于Heap的一部分,但一般不用GC去回收或压缩它的空间。JVM的规范中也没有明确规定方法区的位置或者用于管理编译后代码的具体策略。方法区的尺寸大小也是可固定,可缩放的。
同Heap的异常一样,方法区的异常也是OutOfMemoryError。