Java堆
线程共享的区域:主要用来保存对象实例或者数组等,当堆中没有内存空间可分配给实例,也无法再扩展,则抛出OOM异常
JDK8
年轻代:被分为三部分,Eden区和两个大小严格相同的Survivor区,根据JVM策略,在经过几次垃圾收集后,任然存活的于Survivor的对象将被移动到老年代区间
老年代主要保存生命周期长的对象,一般是一些老的对象
元空间保存的类信息、静态变量、常量、编译后的代码
JDK7
JDK8 将方法区/永久代 移除堆空间的原因
方法区/永久代存放的是类信息、常量信息等,当类动态生成或者加载时,内存大小不好控制,为了防止内存溢出,放到了本地内存中。