【发布时间】:2011-10-20 07:46:59
【问题描述】:
我们使用下面的代码从 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") 并且不能在一个周期内进行垃圾收集?这是一个强有力的参考吗?
感谢您的任何指点。
【问题讨论】:
-
您确定这是内存泄漏吗?还是您只是消耗了太多内存?
-
你在这里做什么 // 在 for 循环中通过读取检查您的班级是否以任何方式持有对项目的引用?
-
@HefferWolf:我有一个疑问。感谢您的澄清。如果 items[] 被声明为类级(静态)变量并初始化以保存配置中的元素,这将优化代码,因为不会为每个线程执行读取值,而只是第一次读取。对吗?
-
如果将整行设置为静态类属性,则配置只会在类加载时运行(通常只有一次,但不要指望它)。
标签: java memory-leaks