【问题标题】:Can you recycle a vector of Domino objects?你能回收 Domino 对象的向量吗?
【发布时间】:2012-06-04 07:47:56
【问题描述】:

我制作了一个 Domino ViewEntries 对象向量(它们可以是文档或任何 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();
}

【问题讨论】:

    标签: java lotus-domino recycle


    【解决方案1】:

    容器中的 Domino 对象仍然是 Domino 对象,因此您必须在每个元素上调用 recycle 以回收其内存。

    您包含的代码完成了这个任务,没有办法通过更少的recycle() 调用来完成这个任务。

    【讨论】:

      【解决方案2】:

      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

      http://www.bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-6-now-it-gets-complicated-java-garbage-collection-notes-and-threads

      http://www.bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-7-garbage-threads-and-the-corba-classes-in-notes

      【讨论】:

        猜你喜欢
        • 2015-06-24
        • 2011-02-05
        • 2018-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        相关资源
        最近更新 更多