为什么要用ArrayListUnmanaged?
ArrayListUnmanaged内部不会维护allocator,仅仅在需要的时候由调用者手动传递,降低内存消耗。
ArrayListUnmanaged本质上是满足了一些的特殊要求。我们知道,ArrayList在init的时候需要传递allocator,然后这个allocator会一直保存在结构体中,当我们的内存中有大量的类似ArrayList这种结构的时候,allocator会占据一部分内存。
这种情况我们应该如何优化?
其实只需要在调用方法的时候把allocator传递进去就可以了。
我们不会对allocator做修改,我们只会使用一种allocator申请内存和释放内存,所以我们可以把allocator放到外部,在ArrayList调用需要allocator的函数时传递过去即可
注意事项
在ArrayList生命周期内应该使用同样的allocator,不能在申请内存的时候使用page_allocator,在释放内存的时候使用其他allocator
个人感觉
使用频率比较低,有特殊需要或者内存洁癖的人可以使用 🙂