Использование кучи различается при выполнении приложения SWING на другой версии JRE.

Я работаю над устаревшим приложением SWING, которое было разработано для работы на jre 1.5. Теперь я портировал приложение для работы на JRE 1.7.

Проблема в потреблении кучи. JRE 5 использует 15 МБ кучи памяти, но когда я запускаю то же приложение в JRE 7, использование кучи составляет около 24 МБ. Если я вижу память процесса в диспетчере задач; JRE 7 использует на 15 МБ больше, чем JRE 5. Как это могло быть?

Примечание. Никаких изменений, кроме JRE. И выше тестируется на той же машине. ОС: Windows XP (32 бита)


person Karthigeyan    schedule 09.10.2013    source источник
comment
Результаты диспетчера задач могут вводить в заблуждение; профиль.   -  person trashgod    schedule 09.10.2013


Ответы (1)


Из того, что я смог прочитать в примечании Oracle к выпуску Java 7 (посмотрите на «RFE: 6962931») интернированные строки выделяются при генерации основной кучи, что может повлиять на большие приложения.

Также кажется, что размер кучи определяется иначе, чем в Java 6, чтобы использовать преимущества более быстрой платформы (та же страница, следующая точка).

Я не уверен, однако это все объясняет.

person C.Champagne    schedule 09.10.2013
comment
Выделение Interned String теперь перемещается из perm в кучу. Как это повлияет на потребление памяти процессом. Я проделал некоторую работу, и теперь куча контролируется (установкой Xms). Но дело в том, что теперь пермь памяти увеличили с 12Мб до 19Мб. В любом случае, потребление памяти в Java 7 велико. - person Karthigeyan; 10.10.2013