現在我正在閱讀關於Java垃圾收集的這篇文章:http://www.javaworld.com/javaworld/jw-08-1996/jw-08-gc.html?Java垃圾收集器澄清
這裏是一個功能的JMS客戶端
public void foo(){
...//Create Connection factory, connection, and session, topic
TopicSubscriber tp = session.createDurableSubcriber(topic,"001");
tp.setMessageListener(this)
}
片斷這個問題是不是JMS,但更與對象「TP」發生了什麼FOO()函數調用結束後。函數結束後,無法再引用tp。我假設在createDurableSubscriber()中使用關鍵字「new」,這意味着對象被放置在JVM堆上。然而,由於tp不能再被引用,它受JVM垃圾收集的影響嗎?
所以我想沒有辦法知道肯定,除非你看看源代碼您使用的API ... – Albinoswordfish 2010-09-16 17:37:40
確切地說,或者如果您信任API開發人員。 – 2010-09-16 18:12:15
或信任該API。如果*你使用了某些東西,*你*可以忘記它(只是失去你的參考)。當應用程序的其他部分執行相同操作時,該對象是垃圾。如果你關心後來可以用'tp'做些什麼,那麼保留它。否則,讓API和GC關心如何處理它。他們通常很擅長做這件事。 – cHao 2010-09-16 18:14:57