1. 程式人生 > >垃圾回收之倒置復制法

垃圾回收之倒置復制法

空間 htm div class tar lan 額外 位置 兩種

剛才瀏覽了這篇文章,http://www.importnew.com/26821.html,了解了垃圾回收的一些方法。

我發現其中的復制法有非常聰明的地方,就是能方便的重新排序,為了不再需要對空間進行劃分,我認為有兩種改進方法:

前後移動法。從後到前的把數據移動到空間尾部,記錄最後的數據的位置,也就是新的起始內存,這樣移動後的空間是連續的,然後把未來的數據從空間前端寫入,下次回收垃圾則以數據前端的前一個位置作為起點來從後到前的遞次移動數據,這時數據的末端應該是數據前端前一個最近的位置。這只是要求記錄一下移動後數據的前端位置,以及處理數據達到空間末端時能轉移到空間前端的問題。

不推薦的方法:倒置讀寫法。這要求能夠對內存進行倒序的讀取、寫入的功能支持。只要從數據末端開始,從後到前的移動到空間末端,然後進行倒序的讀取、寫入空間內存,下一次回收垃圾則反過來。為了實現這一點可能需要創建一個對內存分配的管理器,時常記錄位置來實現倒序分配空間,而在順序時又不需要這麽做,不平等並且需要額外增加功能,所以不推薦。

垃圾回收之倒置復制法