jvm的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存,它在jvm在启动时被创建,对象所占的内存是由自动内存管理系统也就是垃圾回收器回收。
堆内存是由存活的对象以及死亡的对象组成的。存活的对象不会被垃圾回收器回收,死亡的对象是还没有被垃圾回收器回收的对象。等下一个周期被回收。
如果一个对象被声明为null,则在第一个周期该对象不会被回收,在下一个周期中该对象被回收。
永久代:持久代主要存放类定义,字节码,和常量等很少会变更的信息。并且永久代不会发生垃圾回收,如果永久代满了或者是超过了临界值,会触发完全垃圾回收(Full Gc)。
而在java8中,已经移除了永久代,新加了一个叫做元数据区的native内存区。