学习JVM原理-4.GC算法:批量处理还是一个一个处理

摘自《深入理解Java虚拟机》周志明著

答案:批量处理

具体有两种做法:

  1.Mark(判死刑),然后批量sweep (Mark-Sweep算法)

  2.把所有对象都放到Heap中的一块区域中,这个区域可以理解为一个监狱;监狱塞满人时,就一次性找出尚不须回收的对象,把它们复制到Heap中的空闲区域中,然后投弹夷平监狱,清除出整个内存区域;新的关押区域即成新的监狱,它也终将被夷平 (整个算法叫做copying 算法)

第一种做法中,由于存活对象跟可回收对象混杂在一起,可回收对象们没有集中在一起,因此要一个一个清除,效率会比较低(相当于挨家挨户搜查杀人),而且还会造成内存碎片,不利于大对象的分配

第二种模式效率高,且没有内存碎片,但由于它总是用一块内存,空置一块内存,这会造成内存浪费。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.