创建对象:
A a = new A();
A a:声明对象变量,存储在虚拟机栈中
new A():对象实例化,在堆中分配内存
GC堆:新生代,老年代 方法区:永久代(非堆区)
新生代GC(Minor GC):Eden区和两个Servivor区(from space,to space),默认比例8:1, 采用复制法
老年代(Full GC/Major GC):采用标记-清楚法或者标记-整理法
大部分对象引用都是分配在新生代区,当Eden区没有空间分配内存时,JVM发起Minor GC,将Eden和from space可用对象复制到to space,然后清楚垃圾,to space变为from s
老年代GC发生时,一般都会发生Minor GC,速度非常慢
大对象直接进入老年代:放在新生代会引发大量内存复制
长期存活对象进入老年代
动态年龄判断