3

私は考えていた。サーブレットを使用した単純なJavaWebプロジェクトがあります。ユーザーが使用していない場合(GlassFishでローカルにホストしています)でも、プロセスのメモリ使用量に鋸歯状のパターンが見られます。JVMが何をしているのか理解できないようですか?JVMが使用するメモリの通常の流れを理解しています。ヒープは、アプリケーションが作成しているオブジェクトでいっぱいになっています。ある時点で、ヒープはガベージコレクターが入るポイントに到達します。これにより、使用されなくなったすべての「キャッシュされた」オブジェクトが削除され、新しいオブジェクトを作成してヒープサイズで埋めることができます。

私が疑問に思うのは、JVMがアイドル状態のときに常に何をしているのかということです。ここに画像の説明を入力してください

編集:

コメントで言ったように。Eclipseで非常に単純なJavaアプリケーションを作成し、「helloworld」というSwingウィンドウを表示しました。Java VisualVMでJVMのメモリ使用量を見ると、同じ鋸歯状のパターンが見られます。

4

2 に答える 2

9

VisualVMが有罪であることが判明しました。これは、VisualVMが常にJVMに統計情報を要求するため、JVMがオブジェクトを作成してVisualVMに情報を提供するためです。

PeterLawreyに感謝します

于 2012-10-29T15:23:54.490 に答える
3

私の推測では、アプリサーバーはある種の舞台裏の簿記を行っていると思います。誰も使用していなくても、バックグラウンドで実行されているスレッドがあることに注意してください。また、アプリはQuartzなどの任意のタイプの時系列トリガーフレームワークを使用していますか?または、ロギングについてはどうでしょうか。ログメッセージをファイルにアクティブに送信していない場合でも、ロガーが呼び出されているため、あらゆる種類のものが作成/破棄されています。

于 2012-10-18T15:37:45.860 に答える