【问题标题】:Retrieve SAXBuilder object from the memory从内存中检索 SAXBuilder 对象
【发布时间】:2012-03-29 11:57:34
【问题描述】:

我的 Java 应用程序中有一个线程,该线程运行 while(True) 循环,其中包含 sleep(50000)(5 分钟)。该线程在循环之前加载一个 XML 文件,因为我需要在第一次迭代中从中解析一些信息。

     //Loding XML File
     org.jdom.Document document = null;
     SAXBuilder sxb = new SAXBuilder();
     try
     {
        document = sxb.build(new File("Configuration/Map.xml"));
     }
     catch(Exception e){}
     org.jdom.Element racine = document.getRootElement();
    //End loding XML File

从第 2 次迭代开始,使用 XML 文件的概率降低了很多,因此将 XML 文件保留在内存中没有任何意义(因为文件有 103,000 行 / 3 MB)。所以我决定从内存中检索它并在每次需要时加载它。 问题是我找不到如何从内存中检索 documentracine 对象,因为 Java 自动使用垃圾收集。 告诉我这是否是获得优化解决方案的好习惯。

【问题讨论】:

    标签: java memory garbage-collection sax jdom


    【解决方案1】:

    如果你只希望你的对象被垃圾回收,那么我认为让变量 Null 可以做到。

    document = null; 
    sxb = null;
    racine = null;
    

    【讨论】:

    • 非常感谢如果你想让你的对象符合垃圾回收的条件,请将其引用变量分配给 null。 但我想知道我的解决方案是否是一个好的解决方案。
    • 这个解决方案将像 GC 在 java 中一样工作。 GC 将收集那些不再可达的对象。因此,您使用您的文档、sxb、racine 等对象并在完成后将它们设置为 Null。使它们有资格被 GC 收集。
    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多