堆
堆内存大小可以调节
堆存储类、方法、常变量保存所有引用类型的真实信息
堆结构
1.新生区:伊甸区、幸存0区、幸存1区
2.养老区
3.永久存储区
伊甸区 GC新生代
清空后幸存者 会到幸存者0区 幸存者1区 反复清空留下后 最终到养老区
养老区满了就会出现异常
JAVA堆
1)java堆是java虚拟机管理的内存最大的一块
2)java堆是被所有线程共享的
3)java堆的主要作用是存放对象实例
4)java堆是垃圾收集器管理的主要区域
5)收集器基本都采用分代收集算法
6)java堆可以分为新生代和老年代,再细致还可以分为Eden区,From Surivor区,To Surivor区
7)根据java虚拟机规范,java堆可以处在物理上不连续的内存空间中,只要逻辑上是连续即可
值得注意的是,java8中已经移除了永久代,新加了一个称为元数据区的native内存区,所以大部分类的元数据都在本地内存中分配