Java-программа на 32-битной jvm медленнее, чем на 64-битной - PullRequest
0 голосов
/ 15 мая 2018

В настоящее время у меня странное поведение моей программы на Java:
Программа представляет собой приложение JavaFX для настольных компьютеров, которое использует локальный автономный сервер Selenium для открытия веб-приложения, создания некоторых входов и загрузки файла Excel. Он читает файл Excel и сравнивает его с другим листом Excel и отмечает различия.

Работает, проблема в том, что сгенерированный JAR работает медленнее, чем когда я запускаю проект из Eclipse. Единственное существенное различие в производительности - это когда я сравниваю таблицы Excel с Apache POI.

Я сузил проблему до JRE - если я запускаю Jar, он использует 32-битную JRE, если я запускаю из Eclipse, он использует 64-битную JDK.
Я контролировал оба процесса с помощью JConsole, а Jar на 32-битной системе почти использует 20 минут, в то время как 64-битная занимает всего около 30 секунд.

Есть ли проблемы с Apache Poi в 32-битной системе? Или у вас есть какие-либо идеи, предложения, как я могу лучше контролировать и, возможно, найти узкое место для существенной производительности?

1 Ответ

0 голосов
/ 15 мая 2018

Вместо JConsole попробуйте Java Mission Control с Flight Recorder для сбора показателей производительности.Это должно помочь вам понять, где узкое место, например, процессор против сети.Наиболее распространенная проблема с производительностью - недостаточная память кучи и сборщик мусора, пытающийся освободить ее (например, частые полные циклы GC OldSpace).

Проверьте лицензию, чтобы узнать, можете ли вы ее использовать, насколько я помню, она бесплатнав среде разработки, непроизводственной, но в последнее время в лицензию были внесены изменения, поскольку этот инструмент был открытым исходным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...