Более высокое потребление памяти в Java 8, чем в Java 7
Я разрабатываю настольное приложение JavaFX с использованием Java 7. В разрабатываемом приложении используется 10-12 фоновых потоков, которые получают системную информацию или отправляют HTTP-запрос. Я также использую код JNA и JNI.
Когда я ограничиваю размер кучи до 40 МБ, этого вполне достаточно, и приложение работает без проблем с общим объемом ~ 100 МБ.
Однако, поскольку Oracle отказывается от поддержки Java 7 в апреле, я решил обновить приложение до Java 8, обновление прошло гладко, не нужно много изменений в коде, но я заметил, что общее потребление памяти увеличилось до 130 + -20 МБ. Я исследовал эту проблему и обнаружил, что в Java 8 появился Metaspace, я думаю, что это может быть проблемой, но в Java 7 я никогда не устанавливал PermGenSize, так что в конце я не знаю, почему приложение использует больше памяти.
Просто чтобы вы знали, что использование Metaspace составляет около 33-36 МБ в VisualVM.
Любая помощь будет оценена, спасибо
------- решаемые ---------
Проблема была; JDK, который я использовал, был 64-битным, так как 64-битный JDK в Windows содержит только режим сервера, я установил 32-битный JDK 8 и начал использовать его в режиме клиента, поскольку объем используемой оперативной памяти составляет около 80 МБ.