Измените размеры внутренней таблицы и поля entrySet многих HashMaps.В Java 8 после создания, чтобы занять меньше места в куче - PullRequest
0 голосов
/ 22 декабря 2018

У нас есть некоторый устаревший код, который был написан в начале 2000-х годов и который до сих пор работал нормально, за исключением случаев, когда мы добавляли в систему больше пользователей, для которых ежедневно возникали исключения OutOfMemory

Мы собираемся повторить проект изс нуля, но мы хотим лучше всего использовать существующую базу кода.

В коде тысячи (да не лучший дизайн) HashMaps, которые изменяются только в цикле при создании и после этого остаются только для чтения.

Когда я запускаю анализатор памяти, он говорит, что есть15% кучи состоит из неиспользуемого пространства в HahsMaps.

Для этих случаев, если мы используем отражение, чтобы сделать набор записей доступным и изменим его размер таким образом, чтобы размер соответствовал фактическому необходимому, произойдет ли сбой итераторов?

После первоначального построения эти карты доступны только для чтения.Мы выполняем код на Java 6 и несколько экземпляров на Java 8. Не будем обновлять версию JVM, через 10-12 месяцев новый код будет в работе и заменит текущую.

Я знаю, что мы можемдать лучший начальный размер при создании хэш-карты, но это большая работа по сравнению с одной функцией, которая изменяет размер карты на основе текущего размера.Также большинство карт являются частью библиотек (что у меня нет доступа к исходному коду), и они не предоставляют конструктор, который принимает размер.они вызывают конструктор по умолчанию только для своего внутреннего HashMap.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...