2016-06-30 4 views
6

Wir haben eine Reihe von Java-Anwendungen, die wir seit Jahren entwickeln, die über Web Start aus der Ferne gestartet werden. Nach dem Update auf Java SE 8 Update 91 gibt es eine sehr signifikante Pause (20-60 Sekunden, abhängig von der Anwendung) im Startprozess, ohne dass dem typischen Benutzer angezeigt wird, dass etwas passiert. Diese Pause tritt auf, nachdem Java den Dialog "Anwendung starten" geschlossen hat und bevor die Anwendung gestartet wird.Java 8 Update 91 Web Start-Anwendung hat eine lange Startverzögerung

Die Länge der Pause scheint mit der Größe der Anwendung korreliert zu sein. Durch das Wiederherstellen von Java 8 Update 77 wird die Pause vollständig aufgehoben und die gleichen Anwendungen starten ohne Pause.

Unsere Anwendungen fordern "all-permissions" an, da wir Daten für Caching-Zwecke auf dem Client-Laufwerk lesen/schreiben müssen. Alle unsere Gläser sind signiert und haben die notwendigen Modifikationen.

Wenn Ihre Java-Einstellungen die Java-Konsole aktiviert haben, wird die Konsole sofort nach dem Java-Dialogfeld "Anwendung starten" angezeigt, das beim Zugriff auf die JNLP-Datei der Anwendung angezeigt wird. Während dieser Pause ist jedoch keine Aktivität in der Konsole zu sehen (zum Beispiel erscheinen keine der typischen Java-Klassenlade-Nachrichten bis nach der Pause und keiner von unserem Code in der "Haupt" -Methode wird bis nach der Pause ausgeführt).

Einige dieser Anwendungen sind ziemlich groß. Der Code, den wir geschrieben haben, ist ungefähr 10-12 MB, und zusätzliche Ressourcen sind zwischen 15-20 MB abhängig von der Anwendung.

Ich habe einen JDK-Fehlerbericht gefunden, der sehr ähnlich klingt ... Dieser Bericht besagt, dass die Verwendung einer älteren Java-Version zu einem sofortigen Start führt, wenn der Java-Cache vor dem ersten Start entfernt wird. Das Problem, über das ich berichte, scheint nicht vom Java-Cache beeinflusst zu werden. Das Zurückkehren zu Java 8 Update 77 führt zu einem sofortigen Start, ohne den Java-Cache zu löschen.

Die Java-Versionshinweise für Java 8 Update 91 erwähnen einen Bugfix "Regression in Applet-Startzeit behoben". Aber ich sehe nichts, was auf eine absichtliche Änderung hinweisen würde, die zu einer langen Pause während des Startvorgangs führen würde (z. B. erhöhte Sicherheitsscans usw.).

Mit dieser Länge der Pause beim Start und keine Möglichkeit, dem Benutzer anzuzeigen, dass etwas passiert, bekommen wir Beschwerden über die Anwendungen.

Jede Hilfe würde sehr geschätzt werden.

UPDATE 1. Juli 2016 ...

fand ich diese Frage SO, die die gleichen Symptome zu beschreiben scheint: similar issue. Es war jedoch mit Java 7 Update 40 verbunden. Die Lösung bestand darin, die Sperrung in der Datei deployment.properties zu deaktivieren.

Ich habe die Java-Konsole verwendet, um "Do not check" sowohl für "Ausführen von Zertifikatssperrungsüberprüfungen für signierten Code an" als auch für "Durchführen von TLS-Zertifikatssperrüberprüfungen für" festzulegen. Ich habe überprüft, ob die Änderungen in der Datei deployment.properties enthalten sind. Diese Einstellungen beheben oder verbessern das Problem jedoch überhaupt nicht.

Wenn dies funktioniert hätte, wäre das ein guter Indikator für das Problem, aber es wäre keine nützliche "Lösung", wenn Clients diese Sperrprüfungen in ihren erweiterten Einstellungen deaktivieren. Es wäre insbesondere für die breite Öffentlichkeit, die Zugang zu einer Reihe unserer Anwendungen hat, nicht hilfreich.

UPDATE 7. Juli 2016 ...

Basierend auf den Kommentar von jaivalis ich den frühen Zugang Version von Java 8 aktualisieren 112 JRE heruntergeladen. Wenn ich unsere Anwendungen mit dieser JRE starte, gibt es keine Pause. Die Anwendungen werden sofort ausgeführt, nachdem der Dialog "Anwendung starten" geschlossen wurde.

Bis jetzt kann ich keine Notizen finden, die erklären, warum das sein würde. Ich hoffe, dass dieser "Fix" nicht das Ergebnis neuer Sicherheitsmaßnahmen ist, die nicht vollständig auf diese frühe Zugriffsfreigabe angewendet wurden. Ich hoffe, dass etwas tatsächlich angesprochen wurde und dass die sofortige Launch-Performance erhalten bleibt, wenn diese Veröffentlichung offiziell ist.

Übrigens kann ich kein offizielles Veröffentlichungsdatum für Java 8 Update 112 finden. Ich hatte gehofft, dass es im Juli passieren würde, aber ich sehe einige Hinweise auf Oktober. Hat jemand Informationen darüber, wann dieses Update allgemein verfügbar sein wird? Hier

ist die frühe Zugang Seite für Java 8 Update 112 early access
Hier wird die Release-Datum Info I Java 8 Update 112 release timeline gefunden

Diese page auch ein Java-8-Update erwähnt 102, aber ich kann nicht früh Zugangsfreigabe für das Update finden . Alle Links, die ich finde, verweisen auf das Update 112.

+1

Versuchen Sie, etwas wie strace zu verwenden, um zu sehen, was der Prozess für diese 20 - 60 Sekunden macht. – mekazu

+1

VisualVM kann auch sehr hilfreich sein, abhängig von der Art des Problems. Kannst du einen Stack Dump oder ein Profil bekommen? –

+0

-mekazu Ich laufe Windows, also suche ich nach einer Version von strace oder ähnlich, um es zu versuchen. - Steven Ich habe gerade einen Thread-Stack-Dump (v-Option in der Java-Konsole). Soll ich das zu meiner Frage hinzufügen? Oder wie poste ich sowas hier, da es ziemlich lang ist (ich bin brandneu in diesem Forum)? – Rob

Antwort

1

Dieses Problem wurde mit der Java 8 Update 101-Version behoben (technisch Build 1.8.0_101-b13).

0

Hallo fand ich etwas, das Sie

:)

In dem letzten Patch-Notes helfen könnte von Oracle angegeben, dass dies ein Fehler Problem in dem letzten Patch von Java

Persönlich würde ich ein dritt- finden Party

Hier eine frühere Version von Java zum Download ist ein Link zu dem Patch-Notes http://www.oracle.com/technetwork/java/javase/8u20-relnotes-2257729.html

Hoffe, dass Sie das Problem finden!

+0

-Mitchell danke für die Eingabe, aber diese Release Notes Referenz Java 8 Update 20 und nach dem Durchlesen von ihnen sehe ich keine Hinweise auf Verzögerungen in Java Web Start-Anwendungen – Rob