Java - .jar файл заканчивается из кучи, но выполнение в Eclipse не - PullRequest
0 голосов
/ 30 октября 2018

В настоящее время я работаю над GUI-приложением с javafx, которое отображает содержимое некоторых файлов Excel (всего около 3 МБ). Я использую apache POI для загрузки данных файла Excel, которые я затем сохраняю в некоторых пользовательских объектах. Если я запускаю приложение из Eclipse, все работает нормально. Если я создаю его как .jar с Maven, я получаю ошибку out of heap, и мне нужно установить -Xmx512M, чтобы приложение работало без сбоев.

Я только что заметил, что моя программа занимает 1 ГБ оперативной памяти, работающей в затмении, и около 580 МБ, работающих в качестве jar с настройкой, указанной выше.

Я не знаю, почему моей программе требуется так много оперативной памяти, хотя в действительности она содержит всего 3 МБ фактической информации.

Я даже использую метод file из apache POI, чтобы уменьшить потребление памяти:

final URL path = this.getClass().getClassLoader().getResource(filename);
final File f;
if(path.getPath().contains(".jar"))
    f = new File(filename);
else
    f = new File(path.getFile());
final Workbook workbook = WorkbookFactory.create(f);
...

1 Ответ

0 голосов
/ 30 октября 2018

попробуйте запустить вашу программу с параметром xmx, установленным как минимум на 1 ГБ, поскольку вы знаете, что он потребляет столько же.

java -Xmx 2048

Ваша программа может иметь только 3 МБ информации. Но ваша программа может легко выполнить операции, чтобы дублировать эту информацию или иным образом преобразовать ее и стать в 1000 раз больше исходных данных. Вы можете попытаться оптимизировать свою программу, освободив ресурсы вручную.

...