JVM内存模型知识点梳理

堆:

用于存放对象。分为年轻代与老年代。区别在于年轻代用于存放生存周期较短的对象,而老年代一般则是由年轻代转过来的。

而年轻代中又分为Eden区,S0区和S1区。对象刚刚创建时,一般存放在Eden区,待Eden区满后,进行垃圾回收,存活下来的对象会放入S0区,同时生存周期+1,S0区满后,进行垃圾回收,剩余的对象转入S1区,生存周期+1;S0区和S1区循环往复此过程,知道对象的生存周期>15(默认),转入老年代,采用mark-sweep-compact算法。

栈:

分为虚拟机栈和本地方法栈。

当线程创建时,分配一个栈。每个线程都有一份。里面存储的是一个个栈帧,每个栈帧对应着一个方法,方法的执行进入对应着栈帧入栈,方法执行结束时,栈帧出栈。

方法区:

存放类信息、方法名称、静态常量等。

posted @ 2021-03-10 15:17  Coder_Dai  阅读(67)  评论(0)    收藏  举报