1、JVM的内存结构由堆、栈、本地方法栈、方法区等部分组成。
2、JVM分别对新生代和旧生代采用不同的垃圾回收机制。3、所有通过new创建的对象的内存都在堆中分配。4、堆被分为新生代和旧生代5、新生代又被划分为Eden和Survivor区6、Survivor油FromSpace 和 ToSpace组成。7、新建的对象都用新生代分配内存,当Eden内存不足时,会把存活的对象转移到Servivor>中8、新生代中经过多次垃圾回收仍然存活的对象转移到旧生代。9、新生代采用Copying算法进行回收,即扫描出存活的对象并复制到一块完全未使用的空间中,即在Eden和FromSpace或ToSpace之间copy,最后转移到旧生代。10、旧生代与新生代不同,其中的对象存活时间较长,比较稳定,故采用标记(Mark)算法回收。11、标记算法:扫描出存活对象并标记,然后回收未被标记的对象。12、回收后的碎片空间要么进行合并,要么标记出来便于下次分配,总之要减少内存碎片带来的效率损耗。
参考文章: