7

ときどき、Java の起動時間について話し合っているのを耳にしました。これは重要なパフォーマンスの側面のようです。しかし、それは本当に何ですか?

  • それは何で構成されていますか?
    1. 動的クラスローディングによるクラスローディング時間?
    2. それとも、コンパイルのみの JVM での初回コンパイルのオーバーヘッドですか?
    3. または、Java プログラムの実行の開始時に「遅さ」を引き起こす何か他のものはありますか?

それから、2つ目の質問は

  • Java プログラムの起動時間を測定する方法は? 起動時間と呼ばれる期間は、どの時点からどの時点までですか?

質問の仕方が正しいかどうかわかりません。そうでない場合は、お知らせください。ありがとう!

4

2 に答える 2

1

起動時間は正式に定義されていません。実際、実際の IT で使用されるほとんどの用語は正式に定義されていません。(または、正式な定義は無視されます。)

しかし、大まかに言えば、アプリケーションが起動されてから、何か役に立つことができるようになるまでの時間です。起動中に何が起こるかはアプリケーションによって異なりますが、静的クラスのロード、静的クラスの初期化、および (おそらく) 一部のクラスの JIT コンパイルが含まれます。その他には、UI の開始、データベースへの接続、アプリケーション固有のデータ構造のプリロード、アプリケーションの「ワイヤリング」などが含まれる場合があります。

「起動時間」を正式に定義しようとする際の問題は、どの定義も、アプリケーション タイプの重要なサブセットでは機能しない可能性が高いことです。また、定義できる場合でも、アプリケーションが「準備完了」を通知した後、一部の起動 (またはウォームアップ) タスクがバックグラウンドで発生し続ける可能性があるという複雑な問題があります。

(これは Java 固有の問題ではありません。ラップトップの「起動」を考えてみてください。つまり、電源を入れてからデスクトップが完全に使用可能になるまでの間に何が起こるかを考えてみてください。)

Java プログラムの起動時間を測定する方法は? 起動時間と呼ばれる期間は、どの時点からどの時点までですか?

どちらも、話しているアプリケーションの種類と、アプリケーションの起動フェーズとして考慮したいものに応じて、決定するのはあなた次第です

于 2012-06-15T01:35:31.543 に答える
1

Stephen C が述べたように、「起動時間」の一般的な正式な定義はありません。

この概念を直感的に理解するために、Oracle の Webでいくつかの説明を見つけました。

基本的に、それは非公式の定義を提供します。「アプリケーションの起動時間とは、アプリケーションが起動して実行され、想定されていることを開始する準備が整うまでにかかる時間です。」 JVM とアプリケーション自体の両方が起動時間に影響を与える可能性があります。

また、起動時間を短縮するためのアイデア (ヒープ サイズ-Xms/-Xmxの調整) も提供します。ヒープ サイズが大きすぎたり小さすぎたりすると、起動時間が長くなります。

さらに、「遅い JVM 起動の診断」では、起動が遅い理由を見つけるための手がかりを示しています。

上記はすべて JRockit JVM のコンテキストにありますが、考え方はより一般的です。

于 2012-06-20T21:36:53.500 に答える