Я пишу заявку Swing на стороні клієнта (графічний дизайнер шрифтів) на Java 5 . Останнім часом я стикаюся з java.lang.OutOfMemoryError: Java heap space
помилками, оскільки не буду консервативним щодо використання пам'яті. Користувач може відкривати необмежену кількість файлів, а програма зберігає відкриті об'єкти в пам'яті. Після швидкого дослідження я виявив Ергономіку у віртуальній машині 5.0 Java та ін., Які говорять на машині Windows, JVM за замовчуванням максимум розміру купи 64MB
.
З огляду на таку ситуацію, як я маю поводитися з цим обмеженням?
Я міг би збільшити максимальний розмір купи за допомогою параметра командного рядка до Java, але це вимагатиме з'ясування доступної оперативної пам’яті та написання програми запуску чи сценарію. Крім того, збільшення до деякого кінцевого максимуму в кінцевому рахунку не позбудеться проблеми.
Я міг би переписати частину свого коду, щоб зберегти об'єкти для файлової системи часто (використання бази даних - це одне і те ж), щоб звільнити пам'ять. Це може спрацювати, але, мабуть, теж багато роботи.
Якщо ви можете вказати мені на деталі вищезазначених ідей або на деякі альтернативи, такі як автоматична віртуальна пам'ять, динамічно збільшуючи розмір купи , це буде чудово.