我正在寻找java程序中的一些内存泄漏。
我有一个名为ABCConfiguration
和ABCConfigurationInfo
类的类。 ABCConfigurationInfo
是一个具有一些private static final String
常量并保留私有TreeMap
对象的类。 ABCConfiguration
是一个配置类,它保留ABCConfigurationInfo
类(private ABCConfigurationInfo fInfo;
)的对象。
当多次执行程序时,我发现(使用MAT)ABCConfigurationInfo
的对象不断增加。我没有修复。
那是我改变了
private ABCConfigurationInfo fInfo
到
private static ABCConfigurationInfo fInfo.
在此之后,我在多次执行后检查了ABCConfigurationInfo
的对象。它变得稳定,一个对象正在创造。这是真正的解决方案吗?你能告诉我吗。
我知道,有了这些信息很难说清楚。
提前致谢
答案 0 :(得分:1)
在原始版本中,每ABCConfigurationInfo
只有一个ABCConfiguration
。在static
版本中,整个应用程序只有一个ABCConfigurationInfo
;它由所有ABCConfiguration
个对象共享。我们不知道这是否合适 - 只有你这样做。不过,这是一个很大的变化,所以你当然需要知道自己在做什么。
答案 1 :(得分:0)
如果你能负担所有ABCConfiguration对象上相同的fInfo实例,那么它就是一个有效的修复。