使用Config进行Java内存泄漏

时间:2011-10-20 07:47:00

标签: java memory-leaks

我们使用以下代码从XML读取配置值。我认为这可能会导致内存泄漏。

   // simulated code
   class ConfigReader {

      void matchPlanIDs() {
           ConfigurationItem[] items = ConfigurationHelper.getConfiguration("PLAN_IDS");
           // do something with here in for loop by reading from 
           // items[i].getTagVlue()...;  

           return;
      }
   }

在方法执行结束时,items []是否引用了ConfigurationHelper.getConfiguration(“PLAN_IDS”)并且无法在一个周期内进行垃圾回收?这是一个强有力的参考?

感谢您的任何指示。

3 个答案:

答案 0 :(得分:1)

本身,

void matchPlanIDs() {
     ConfigurationItem[] items = ...
   return;
  }

不能导致内存泄漏。当然items将被垃圾收集。

顺便说一下,最后的return也毫无意义。

如果您认为ConfigurationHelper.getConfiguration(...)导致内存泄漏,请尝试通过一个简单示例进行验证。如果您确实注意到异常行为,可能最好向ConfigurationHelper的作者提交错误报告。但是,我怀疑这种情况不太可能,我怀疑你的记忆消耗问题在其他地方。

答案 1 :(得分:0)

在方法执行结束后,items实例可以立即进行垃圾回收,因为没有任何东西持有对它的引用。这没有任何内存泄漏的可能性。在执行该方法期间,阵列可能会占用大量内存,如果GC配置不正确,可能会导致Full GC。

答案 2 :(得分:0)