【发布时间】:2013-09-04 08:42:09
【问题描述】:
我有一个控制台 Java 应用程序,它需要来自数据库的一些数据。由于应用程序不断运行,每 30 秒一次,为了降低数据库的压力,我正在使用某种数据缓存。
因为数据库中没有大量需要的数据,所以我使用单例 Hashmap 作为我的缓存。我的缓存类如下所示:
public class Cache extends Hashmap<Integer, Hashmap<Integer, ArrayList<String>> {
//some code
}
系统每 5 分钟刷新一次缓存:
1) 为现有数据调用“clear()” 2) 用数据库中的新数据填充缓存。
告诉我,如果我为我拥有的结构(“嵌套”哈希图)调用“clear()”,Java 会清除我的缓存键下包含的所有数据,还是会导致内存泄漏?
【问题讨论】:
-
简短回答:是的 clear() 完美运行。长答案(似乎是重复的):stackoverflow.com/questions/16231387/…
-
释放映射中的键/值对象,但保留后备数组/表。
-
听起来像是内存泄漏。您是否确保所有相关的 db 相关对象都没有引用您的 hashmap 中的项目? ...例如。
ResultSet等
标签: java memory-leaks hashmap