Мы работаем над (большой) системой, которая работает как приложение Java Web Start.Таким образом, пользователь загружает файл JNLP и запускает его на своем компьютере.
У нас были проблемы с некоторыми пользователями, утверждающими, что приложение зависает при открытии нескольких окон.Мы сделали несколько тестов, и причина ясна и повторяема:
- Если пользователь открывает файл JNLP с помощью 32-битной JVM, максимальный объем памяти остается равным 256 МБ, и как только этот порог будет превышен,приложение освобождает память на 0% и зависает.
- Если один и тот же пользователь открывает тот же файл JNLP с помощью 64-битной JVM, максимальный объем памяти начинается с 256 МБ, но, поскольку системе требуется больше памяти, JVM резервируети использует его свободно, до 1 ГБ, если необходимо.
Мы провели несколько тестов, и ситуация всегда одинакова.
Есть ли способ для 32-битной JVMвести себя точно так же, как 64-битный?Я знаю, что мы можем установить максимальный размер кучи, но конечный пользователь может иметь 1 ГБ, 2 ГБ или 3 ГБ свободной памяти, и мы хотели бы, чтобы он или она могли использовать их при необходимости, что в точности и происходит с 64-разрядной версией..
Мы используем Java 8, обновление 201.
Потребности приложения в памяти зависят от того, сколько окон вы открываете.Для обычного использования 256 МБ-512 МБ было бы более чем достаточно, но некоторым пользователям было бы полезно иметь возможность открывать 7-10 экранов, а это могло бы составить до 800 МБ-1 ГБ ОЗУ.