JVM内存模型知识点梳理
堆:
用于存放对象。分为年轻代与老年代。区别在于年轻代用于存放生存周期较短的对象,而老年代一般则是由年轻代转过来的。
而年轻代中又分为Eden区,S0区和S1区。对象刚刚创建时,一般存放在Eden区,待Eden区满后,进行垃圾回收,存活下来的对象会放入S0区,同时生存周期+1,S0区满后,进行垃圾回收,剩余的对象转入S1区,生存周期+1;S0区和S1区循环往复此过程,知道对象的生存周期>15(默认),转入老年代,采用mark-sweep-compact算法。
栈:
分为虚拟机栈和本地方法栈。
当线程创建时,分配一个栈。每个线程都有一份。里面存储的是一个个栈帧,每个栈帧对应着一个方法,方法的执行进入对应着栈帧入栈,方法执行结束时,栈帧出栈。
方法区:
存放类信息、方法名称、静态常量等。
浙公网安备 33010602011771号