刚才浏览了这篇文章,http://www.importnew.com/26821.html,了解了垃圾回收的一些方法。
我发现其中的复制法有非常聪明的地方,就是能方便的重新排序,为了不再需要对空间进行划分,我认为有两种改进方法:
前后移动法。从后到前的把数据移动到空间尾部,记录最后的数据的位置,也就是新的起始内存,这样移动后的空间是连续的,然后把未来的数据从空间前端写入,下次回收垃圾则以数据前端的前一个位置作为起点来从后到前的递次移动数据,这时数据的末端应该是数据前端前一个最近的位置。这只是要求记录一下移动后数据的前端位置,以及处理数据达到空间末端时能转移到空间前端的问题。
不推荐的方法:倒置读写法。这要求能够对内存进行倒序的读取、写入的功能支持。只要从数据末端开始,从后到前的移动到空间末端,然后进行倒序的读取、写入空间内存,下一次回收垃圾则反过来。为了实现这一点可能需要创建一个对内存分配的管理器,时常记录位置来实现倒序分配空间,而在顺序时又不需要这么做,不平等并且需要额外增加功能,所以不推荐。