2012-04-17 6 views
0

私のアプリケーション全体がうんざりしています。最初のログはmingled upです。アプリケーションは定期的な間隔ごとにフリーズしているようで、1分おきにほぼ半分凍結しているようです。タスクの大半を実行する通常のスレッドは失われているように見え、彼らの痕跡はありません。ロギング。ソケットは、ユーザーのレポートごとにハングアップしたようです。Javaアプリケーションの一貫性のない状態

これらのすべてを引き金にしたものはまだほとんどありません。 CPU使用量の記録は、その時点ですべての問題を示しています。私が推測するように残されているように、出発点または特定のインスタンスが私の心を逃れることを指摘することができますか、これらの混乱の可能性のある理由を解読することができます。

おかげで、 Mawia

+0

メモリ使用量を確認しましたか?あなたはJVMのヒープ限界は何ですか? '-Xmx'コマンドラインオプションを意味します。 – AlexR

+0

xms -1000MB XMX-1500MB! – mawia

+0

コードが大きい場合は、問題のある領域を絞り込んでここに貼り付けます。私はあなたが意図せずスレッドを遅らせているために定期的なフリーズ間隔があるかもしれないが、実際にコードを見ることなく真であるかどうかを知る方法はないと言えます。 –

答えて

2

制限付きメモリを持つ仮想ボックスでGCを非常に集中的に使用するJavaアプリケーションを実行すると、このような現象が発生しました。ゲストOSに十分な "物理的な"メモリがないため、スワップメモリ​​を使用していました。しかし、スワップは、ホストOSの物理ディスクにマップされた「仮想」ディスク上にあった。

ゲストOS上で実行されているjava GCが動作を開始したとき、実際にホストOSの物理ディスクにあるヒープからガーベジを削除する必要がありました。

あなたの状況は同じですが、おそらくそれは似ているとは言いたくありません。だから、あなたが持っている物理メモリの量とGCの実行頻度とクリアしようとしているメモリの量を調べてみてください。あなたはJVMに1GBを渡しました。十分な物理メモリがありますか?おそらく、あなたのJVMヒープは、実際にはOSスワップメモリ​​、すなわちディスク上にありますか?

アプリケーションの調査をお試しください。膨大なメモリを割り当て、頻繁に消去する可能性はありますか?キャッシュなどを使用することは可能ですか?パーマネントがどれだけのメモリを使用しているか、そして短命のオブジェクトがどれくらいあるか確認してください。

1

なぜあなたはサンプルベースの監視ツールを使用して、プログラムに添付しようとすると、スレッドとJVMサブシステムが何をしているか表示されないのですか? JVisualVMはJDKに同梱されており、使いやすいです。

+0

ああ!それは既に結ばれています。しかし、これらはすべて過去に誰もシステムに監視していないときに起こっています。 – mawia

関連する問題