推荐视频:https://www.bilibili.com/video/av33910105?from=search&seid=15864221088237532625
上图可知:
方法区:用于存放一些静态的资源。类加载器将类加载完之后就存放在方法区。
堆:存放一些实际的对象new 出来的对象都放在堆当中
栈:存放对象的引用和一些临时变量。
堆的详细介绍
堆分为两个区新生区和老年区,新生的对象会存在新生区,当经过15次垃圾回收(GC)之后就会从新生区晋升到老年区。老年区的GC远远少于新生区的GC
新生区又分为 :eden s0(from) s1(to),s1 和s2是大小相同并可以互相角色转化的两个区。eden区存放所有的新生对象。当经过一次GC之后对象就进入了S0 或者 S1
S0和S1是用来用复制算法回收一些没用的对象。