У меня есть консольное Java-приложение, которое нуждается в некоторых данных из базы данных. Поскольку приложение работает постоянно, каждые 30 секунд, чтобы снизить нагрузку на БД, я использую какой-то кеш для данных.Java hashmaps и утечки памяти
Поскольку в базе данных нет большого количества необходимых данных, я использую singleton Hashmap в качестве кеша. Мой класс кэша выглядит следующим образом:
public class Cache extends Hashmap<Integer, Hashmap<Integer, ArrayList<String>> {
//some code
}
Каждой система 5 минут обновит кеш:
1), призывающий «ясно()» для существующих данных 2) заполнение кэша новых данных дБ.
Скажите, если я назову «clear()» для структуры, у меня есть («вложенные» хэш-карты), будет ли явная очистка всех данных в моих ключах кеша, или у меня закончится утечка памяти?
Короткий ответ: Да clear() работает отлично. Длинный ответ (и это похоже на дубликат): http://stackoverflow.com/questions/16231387/good-way-to-clear-nested-maps-in-java – tea2code
Он освобождает объекты key/value на карте, но поддерживает вспомогательный массив/таблицу. –
Звучит как утечка памяти. Обеспечили ли вы, чтобы все соответствующие объекты, связанные с db, не ссылались на элементы в ваших хэшмапах? ...например. 'ResultSet' и т. Д. – vikingsteve