我创建了一个Domino ViewEntries对象的向量(它们可以是Documents或任何Domino对象)。这不是ViewEntryCollection,也不是DocumentCollection。列表对象是Vector(它甚至可以是ArrayList)。我知道有关回收特定对象的technote,但处理列表中的对象并不清楚
我是否需要单独回收Vector中的所有元素?或者我可以简单地删除它们吗?如果我想回收元素向量,我该怎么做?是否可以使用向量,或者是否应该使用不同类型的列表构造?
这个例子让我相信它实际上不会回收它们......讨论。
Vector entries = new Vector();
..... add each ViewEntry to the collection....
for (int i=0;i<entries.size();i++) {
((ViewEntry) entries.elementAt(i)).recycle();
}
答案 0 :(得分:3)
容器中的Domino对象仍然是Domino对象,因此您必须在每个元素上调用recycle
来回收其内存。
您所包含的代码可以完成此任务,并且无法通过较少的recycle()
来电来完成此任务。
答案 1 :(得分:1)
recycle()方法将删除所选Java对象的后端对象。请注意,它还会删除可能同时引用完全相同的JNI引用的任何其他Java对象的后端对象。
它还将回收通过该类创建的任何对象。例如,如果您回收NotesCollection,它应该回收通过NotesCollection引用的所有文档。或者更明显的是,回收Session对象将回收所有内容。
循环中循环的原因是出于内存目的。如果要将文档存储在向量中,请小心,因为您将每个完整的物理文档保存在内存中。最好存储UNID并根据需要提取文档。或者,如果引用视图,请拉取ViewEntry而不是文档。因为它将使用相当少的内存。
Bobs Balaban的博客文章详细介绍了这一点。
http://www.bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-5-taking-out-the-garbage-java