У меня есть решение Java, созданное в Java 6, и я собираю его в Eclipse, используя JDK 1.6.0_45.Это Runnable JAR, периодически выполняемый в потоке внешней структурой планирования BPMN.JAR выполняет ряд вызовов, как показано ниже:
- вызовы REST для внешнего веб-сервиса c #.
- вызовы REST для Microsoft Project Server для получения отчетов Excel.
- Отправитьотправка электронной почты через SMTP нескольким получателям.
Сборка была запущена на сервере Linux с использованием приведенной ниже среды выполнения Java:
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
Из-за необходимости обновления до Java8, я перекомпилировал решение с Java-SE 1.8 (JDK 1.8.0_121).Я также настроил сервер Linux с нижеприведенным JRE:
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-b10)
OpenJDK 64-Bit Server VM (build 25.171-b10, mixed mode)
То, что я вижу, - это значительное снижение производительности JAR, в результате чего вызовы REST, по-видимому, выполняются как минимум в 4 раза дольше, чем наJava 6, а также любые другие действия, такие как чтение файла Excel в Java.Используя 'top', я вижу, что использование памяти в основном такое же, как в Java 6, только общее время выполнения увеличилось.
Кто-нибудь знает, почему это может быть, есть ли известные проблемы с Java 8?