Web Startを介してリモートで起動されている、数年間開発してきた一連のJavaアプリケーションがあります。 Java SE 8 Update 91にアップデートした後は、起動プロセスで非常に重大な一時停止(アプリケーションに応じて20〜60秒)が発生し、一般的なユーザに何も起こっていないことが示されます。この一時停止は、Javaの「アプリケーションの開始」ダイアログが閉じた後、アプリケーションが起動する前に発生します。Java 8 Update 91 Web Startアプリケーションに長い起動遅延があります
一時停止の長さは、アプリケーションのサイズと相関があるように見えます。 Java 8 Update 77に戻すと、一時停止が完全になくなり、同じアプリケーションが一時停止することなく開始されます。
私たちのアプリケーションは、キャッシュのためにクライアントのドライブにデータを読み書きする必要があるため、「すべてのアクセス権」を要求します。だから私たちの瓶はすべて署名され、必要なマニフェストの変更があります。
Java設定でJavaコンソールが有効になっている場合は、アプリケーションのJNLPファイルにアクセスしたときに表示されるJavaの「アプリケーションの開始」ダイアログのすぐ後にコンソールが表示されます。しかし、この一時停止中はコンソールに何も表示されません(例えば、典型的なJavaクラスの読み込みメッセージは、一時停止後に表示され、 "main"メソッドのコードは一時停止後まで実行されません)。
これらのアプリケーションの中には、かなり大きなものがあります。私たちが書いたコードは約10-12MBで、アプリケーションに応じて15-20MBの追加リソースがあります。
私は非常に似て聞こえるJDKのバグレポートを発見した... bug report このレポートは、インスタント起動時に、古いJavaバージョンの結果を使用すると、Javaキャッシュを最初に開始する前に除去されている場合と述べています。報告している問題は、Javaキャッシュの影響を受けていないようです。 Java 8 Update 77に戻すと、Javaキャッシュを削除せずに即座に起動できます。
Java 8 Update 91用のJavaリリースノートには、「アプレット起動時の回帰が固定されました」というバグ修正が記載されています。しかし、起動時に長い休止を招くような意図的な変更(セキュリティスキャンの増加など)は見られません。
起動時にこの長さの休止時間があり、何か起こっていることをユーザーに示す機能がないため、アプリケーションに関する苦情が出ています。
ご協力いただければ幸いです。 similar issue:
はUPDATE
2016年7月1日...私は同じ症状を説明しているようだ、このSO質問を見つけました。しかし、それはJava 7 Update 40に関連していました。解決はdeployment.propertiesファイルの取り消しチェックを無効にすることでした。
Javaコンソールを使用して、「署名付きコード証明書失効チェックの実行」と「TLS証明書失効チェックの実行」の両方に「チェックしない」を設定しました。そして、変更がdeployment.propertiesファイルに反映されていることを確認しました。しかし、これらの設定は問題を修正したり改善したりすることはありません。
これがうまくいっていれば、問題の大きな指標になりますが、クライアントが高度な設定でこれらの取り消しチェックを無効にするのは便利な "解決策"にはなりません。特に、多くのアプリケーションにアクセスできる一般の人々にとっては有用ではありません。
UPDATE 2016年7月7日...私は、Java 8のアップデート112 JREの早期アクセスリリースをダウンロードjaivalisのコメントに基づいて
。このJREでアプリケーションを実行すると、一時停止はありません。アプリケーションの起動ダイアログが閉じた直後にアプリケーションが実行されます。
これまでのところ、これがどうなるかを説明するメモは見つかりませんでした。私は、この「修正」がこの早期アクセスリリースに完全には適用されていない新しいセキュリティ対策の結果ではないことを願っています。私は、何かが実際に対処され、このリリースが公式であるときに即時打ち上げのパフォーマンスが残ることを期待しています。
ところで、私はJava 8 Update 112の正式リリース日を見つけることができません。私は7月に起こることを期待していましたが、10月の兆候が見られます。誰でもこのアップデートが一般にいつ利用可能になるのかについての情報はありますか?ここで
はここJava 8 Update 112 early access
の早期アクセスページは、私がJava 8 Update 112 release timeline
これpageはまた、Java 8のアップデート102に言及し、私はその更新のための早期アクセスリリースを見つけることができない見つけ、リリース日の情報です。見つけたリンクは、112アップデートを指しています。
dtrussにstraceのようなものを使って、プロセスが20〜60秒間何をしているのかを調べてみてください。 – mekazu
VisualVMは、問題の性質にもよりますが、非常に役立つかもしれません。スタックダンプやプロファイルを取得できますか? –
-mekazu窓が走っているので、straceなどのバージョンを探しています。 - Steven私はスレッドスタックダンプを取得しました(Javaコンソールではvオプション)。私はそれを私の質問に加えるべきですか?または、私はかなり長い間、このようなものをどのように投稿すればよいですか(私はこのフォーラムで初めてです)。 – Rob