2014-02-17 89 views
0

由於JDOM detachRootElement的文檔非常有限,我懷疑讀取XML並將dom樹保留在內存中的最佳方式(如果是隻讀的)。讀取XML並將DOM模型保存在內存中

什麼是常用的是這樣的:

public class .... { 
    Element stored = null; 

    private void load() { 
    // Build the document with SAX and Xerces, no validation 
    SAXBuilder builder = new SAXBuilder(); 
    // Create the document 
    Document doc = builder.build(file); 
    stored = doc.getRootElement(); 
    } 
} 

(這可以拋出一個異常,但我已經離開了這一點,爲了清楚起見)。

知道stored是一個類變量,目前還不清楚doc是保存在內存中還是可以在此之後進行垃圾回收。如果是這樣,是detachRootElement一個可能的解決方案呢?

+0

嗨史蒂芬,對不起,只是檢查了一句:如果你持有obj的「文檔」,那麼你是如何期待它的引用元素(根元素)類變量被GC'ed? http://www.javadocexamples.com/org/jdom/org.jdom.Document-source.html – theMarceloR

+0

我沒有妨礙到文檔的參考,僅存儲,因此我的問題,如果文檔將被垃圾收集。所以,我猜GC上的文檔只有當我從文檔中分離元素時纔有可能? –

回答

1

Java垃圾收集器不會影響任何使用的引用。只要您直接或間接引用了doc的內容,它就不會受垃圾回收的影響。

+0

確實,但在方法運行後還有對doc的引用嗎?或者我必須先分離元素? –