有很多關於爲什麼我們需要在Java中回收對象的文章。爲什麼使用臨時變量來回收XPages中的java對象工作?
我從下面的IBM示例中不能理解的是爲什麼回收「doc」變量被認爲是有用的,但「temp」變量不是。
我完全明白,如果你recyle的佔位符變量,那麼你需要一個「臨時」變量爲getnextdocument()工作,但爲什麼不只是有一個變量和循環
爲什麼是後循環變量不回收「Temp」的成本是可以接受的,因爲不回收「doc」的成本是不可接受的。
http://www-01.ibm.com/support/docview.wss?uid=swg21097861
import lotus.domino.*;
public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
Database db = agentContext.getCurrentDatabase();
View v = db.getView("SomeView");
// turn off auto-update so that if we make a change to a document // and resave, it won't affect the sort order in the view
v.setAutoUpdate(false);
Document doc = v.getFirstDocument();
Document temp = null;
//sets the temp for garbage collection immediately
while (doc != null)
{
// do something with the document here...
// whatever, just don't delete it (yet)!
temp = v.getNextDocument(doc); // get the next one
doc.recycle(); // recycle the one we're done with
doc = temp;
}
// end while
} catch(Exception e)
{
e.printStackTrace();
}
}
}
謝謝所有誰把評論的時間。我認爲所有的答案都是正確的,但保羅已經超越了(正如他經常這樣做)。 – 2014-11-24 23:51:28