Posiadamy zestaw aplikacji Java, które rozwijamy od lat, zdalnie uruchamianych za pomocą Web Start. Po aktualizacji do Java SE 8 Update 91 następuje bardzo znacząca przerwa (20-60 sekund w zależności od aplikacji) w procesie uruchamiania, bez wskazania typowego użytkownika, że coś się dzieje. Ta przerwa pojawia się po zamknięciu okna Java "Uruchamianie aplikacji" i przed uruchomieniem aplikacji.Aplikacja Java 8 Update 91 Aplikacja Web Start ma długi czas uruchamiania
Długość przerwy wydaje się być skorelowana z rozmiarem aplikacji. Przywracanie do Java 8 Aktualizacja 77 całkowicie eliminuje pauzę, a te same aplikacje uruchamiają się bez przerwy.
Nasze aplikacje żądają "wszystkich uprawnień", ponieważ musimy odczytać/zapisać dane na dysku klienta dla celów buforowania. Wszystkie nasze słoiki są podpisane i mają niezbędne oczywiste modyfikacje.
Jeśli ustawienia Java mają włączoną konsolę Java, konsola jest wyświetlana bezpośrednio po oknie dialogowym Java "Uruchomienie aplikacji", które pojawia się, gdy uzyskuje się dostęp do pliku JNLP aplikacji. Jednak w tej pauzie nie widać żadnej aktywności (na przykład żaden z typowych komunikatów ładowania klasy Java nie pojawia się po pauzie i żaden z naszych kodów w metodzie "głównej" nie jest wykonywany aż do przerwy).
Niektóre z tych aplikacji są dość duże. Kod, który napisaliśmy, wynosi około 10-12 MB, a dodatkowe zasoby wynoszą od 15 do 20 MB w zależności od aplikacji.
Znalazłem raport błędu JDK, który brzmi bardzo podobnie ... bug report Ten raport stwierdza, że użycie starszej wersji Java powoduje natychmiastowe uruchomienie, jeśli pamięć podręczna Java zostanie usunięta przed pierwszym uruchomieniem. Problem, który zgłaszam, nie ma wpływu na pamięć podręczną Java. Przywracanie do wersji Java 8 Update 77 powoduje natychmiastowe uruchomienie bez usuwania pamięci podręcznej Java.
Informacje o wydaniu Java dla Java 8 Update 91 wspominają o poprawce "Naprawiono czas uruchamiania aplikacji". Ale nie widzę niczego, co wskazywałoby na celową zmianę, która spowodowałaby długą przerwę podczas uruchamiania (takie jak zwiększone skanowanie zabezpieczeń itp.).
Przy tej długości przerwy w uruchomieniu i braku możliwości wskazania użytkownikowi, że coś się dzieje, otrzymujemy skargi dotyczące aplikacji.
Każda pomoc zostanie bardzo doceniona.
UPDATE 01 lipca 2016 ...
znalazłem to tak, że pytanie wydaje się opisywać identyczne objawy: similar issue. Jednak był związany z Java 7 Update 40. Rozdzielczość polegała na wyłączeniu sprawdzania odwołania w pliku deployment.properties.
Użyłem konsoli Java, aby ustawić opcję "Nie sprawdzaj" zarówno dla "Wykonywania sprawdzeń unieważnienia certyfikatu podpisanego kodu" oraz "Wykonaj sprawdzanie unieważnienia certyfikatu TLS". Sprawdziłem, aby upewnić się, że zmiany są odzwierciedlone w pliku deployment.properties. Jednak te ustawienia w ogóle nie rozwiązują problemu ani go nie poprawiają.
Gdyby to zadziałało, byłoby to świetnym wskaźnikiem problemu, ale nie byłoby użytecznym "rozwiązaniem", gdyby klienci wyłączali te kontrole unieważniania w swoich zaawansowanych ustawieniach. W szczególności nie byłoby to pomocne dla ogółu społeczeństwa, które ma dostęp do wielu naszych aplikacji.
UPDATE 07 lipca 2016 ...
podstawie komentarzem jaivalis Pobrałem wczesne uwolnienie dostępu Java 8 Update 112 JRE. Kiedy uruchamiam nasze aplikacje w tym środowisku JRE, nie ma w ogóle przerwy. Aplikacje uruchamiane są natychmiast po zamknięciu okna "Uruchamianie aplikacji".
Do tej pory nie mogę znaleźć żadnych notatek wyjaśniających, dlaczego tak się stało. Mam nadzieję, że ta "poprawka" nie jest wynikiem nowych środków bezpieczeństwa, które nie zostały w pełni zastosowane w tym wczesnym wydaniu dostępu. Mam nadzieję, że coś faktycznie zostało zaadresowane i że natychmiastowe uruchomienie premiery pozostanie, gdy to wydanie będzie oficjalne.
Przy okazji, nie mogę znaleźć oficjalnej daty wydania dla Java 8 Update 112. Miałem nadzieję, że stanie się to w lipcu, ale widzę pewne oznaki z października. Ktoś ma jakieś informacje na temat tego, kiedy ta aktualizacja będzie ogólnie dostępna?
Oto strona wczesny dostęp do Java 8 Update 112 early access
Oto data wydania informacji znalazłem Java 8 Update 112 release timeline
Ten page wspomina również Java 8 Aktualizacja 102, ale nie mogę znaleźć wczesne uwolnienie dostępu do tej aktualizacji . Wszelkie linki, które znajduję, wskazują na aktualizację numeru 112.
Spróbuj użyć czegoś podobnego do strace, aby sprawdzić, co robi proces przez te 20 - 60 sekund. – mekazu
VisualVM może być również bardzo pomocny, w zależności od natury problemu. Czy możesz uzyskać zrzut stosu lub profil? –
-mekazu Używam systemu Windows, więc szukam wersji strace lub podobnej, aby spróbować. - Steven Właśnie dostałem zrzut stosu wątków (opcja v w konsoli Java). Czy powinienem dodać to do mojego pytania? Lub jak opublikować coś takiego tutaj, ponieważ jest dość długi (jestem nowy na tym forum)? – Rob