类加载顺序
javac Test.java
java -verbose Test
创建Java对象时的内存申请过程:
1、jvm 先尝试在 eden区 分配新建对象所需的内存;
2、如果内存大小足够,申请结束,否则下一步;
3、jvm启动youngGC,试图将eden区中不活跃的对象释放掉,释放后若Eden空间仍然不足以放入新对象,则试图将部分Eden中活跃对象放入Survivor区;
4、Survivor区被用来作为Eden及old的中间交换区域,当OLD区空间足够时,Survivor区的对象会被移到Old区,否则会被保留在Survivor区;
5、 当OLD区空间不够时,JVM会在OLD区进行full GC;
6、full GC后,若Survivor及OLD区仍然无法存放从Eden复制过来的部分对象,导致JVM无法在Eden区为新对象创建内存区域,则出现”out of memory错误”: outOfMemoryError:java heap space