我们使用以下代码从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”)并且无法在一个周期内进行垃圾回收?这是一个强有力的参考?
感谢您的任何指示。
答案 0 :(得分:1)
本身,
void matchPlanIDs() {
ConfigurationItem[] items = ...
return;
}
不能导致内存泄漏。当然items
将被垃圾收集。
顺便说一下,最后的return
也毫无意义。
如果您认为ConfigurationHelper.getConfiguration(...)
导致内存泄漏,请尝试通过一个简单示例进行验证。如果您确实注意到异常行为,可能最好向ConfigurationHelper
的作者提交错误报告。但是,我怀疑这种情况不太可能,我怀疑你的记忆消耗问题在其他地方。
答案 1 :(得分:0)
在方法执行结束后,items实例可以立即进行垃圾回收,因为没有任何东西持有对它的引用。这没有任何内存泄漏的可能性。在执行该方法期间,阵列可能会占用大量内存,如果GC配置不正确,可能会导致Full GC。
答案 2 :(得分:0)