删除 android 中链表的链表
deleting a linked list of linked lists in android
我正在编写一个 android 应用程序,其中包含一些小型对象链表的链表(每个可能有 3 打 1000 个对象)。
我想选择一个内存管理的策略,因为我经常需要删除和重建它们(因为数据是相互依赖的,它比修改状态更容易。)
对于这么小的列表,我不知道是否可以依靠只能在调试模式下工作的 DDMS 工具。
删除其中一个时,我想知道是否通常只清除它(希望 GC 清除子列表)或者我是否必须自己访问整个结构。
换句话说,我应该
LinkedList<LinkedList<MyObject>> theList = getTheList();
void free(){
theList.clear();
}
或
void free(){
LinkedList<MyObject> subList;
for(subList:theList) subList.clear();
theList.clear();
}
?
一旦没有引用列表元素,它们将被垃圾收集器自动清理。你的第一个提议就足够了。
这不是 C++。在 java 中很常见,如果您没有任何其他对它们的引用并且将来不会使用它们,GC 将删除这些对象。我会保持简单明了。
换句话说,如果你想加速你的程序,通过在重新创建这个结构时使用 less new
运算符,我建议使用对象池并重用创建的对象。
我正在编写一个 android 应用程序,其中包含一些小型对象链表的链表(每个可能有 3 打 1000 个对象)。
我想选择一个内存管理的策略,因为我经常需要删除和重建它们(因为数据是相互依赖的,它比修改状态更容易。)
对于这么小的列表,我不知道是否可以依靠只能在调试模式下工作的 DDMS 工具。
删除其中一个时,我想知道是否通常只清除它(希望 GC 清除子列表)或者我是否必须自己访问整个结构。
换句话说,我应该
LinkedList<LinkedList<MyObject>> theList = getTheList();
void free(){
theList.clear();
}
或
void free(){
LinkedList<MyObject> subList;
for(subList:theList) subList.clear();
theList.clear();
}
?
一旦没有引用列表元素,它们将被垃圾收集器自动清理。你的第一个提议就足够了。
这不是 C++。在 java 中很常见,如果您没有任何其他对它们的引用并且将来不会使用它们,GC 将删除这些对象。我会保持简单明了。
换句话说,如果你想加速你的程序,通过在重新创建这个结构时使用 less new
运算符,我建议使用对象池并重用创建的对象。