jvm主要分为三个部分:栈区,堆区,和方法区。栈区主要用来存放基本类型的数据变量,堆区主要是用来存放新建的对象,方法区来存放一些静态方法和属性。
被当做垃圾回收的情况:内存没有变量指向的时候或者是两个内存之间互相指向,但是外部没有指向的时候。
在堆区有分出了两个区域:新生代和年老代。新生代用来存放刚创建的对象,采用赋值会回收方法,如果在s0和s1之间复制一定次数后,转移到年老代,这里的垃圾回收叫做minor gc,年老带这些对象垃圾回收的频率较低,采用标记整理的方法这里的垃圾回收叫做major gc,老年代回收的时候会占用大量的内存,所以一般很少回收老年代的内存。
要想减少老年代的回收就要加大年轻代的内存大小。