私はJVMにglowroot(javaアプリケーション監視)をインストールしました。私のアプリケーションがアイドル状態になると、このようなグラフのメモリヒープの使用が得られます。パターンはほぼ均一に見える。誰かが説明して、グラフのように見えるのはなぜですか?気になります。なぜヒープメモリ使用量グラフがこのように見えるのですか?
2
A
答えて
1
これは仕事でJavaのガベージコレクションです。各ドロップは、未使用の参照を削除してメモリを解放するガベージコレクタです。アプリケーションが新しい参照を作成し続けるため、アプリケーションが再び成長する理由は単純です。
また、より詳細な、について説明のために、この記事を見てすることができます Why a sawtooth shaped graph?
1
(少なくとも)あなたがそれを観察しているので、それはそのように見えます。アプリケーションがまったく何もせず、割り当てを行うスレッドがなかった場合、ヒープの水平線が得られます。
しかし、あなたがそれを観察しているので、JVMでデータが返ってくることがあります。そういうわけで、多くの多くのプロファイリングの質問に見られるユビキタスな鋸歯状のパターンが得られます。以下にいくつかの例を示します。
2
大規模な鋸歯状のパターンは、おそらくGCサイクルの間にメモリの使用率を表します。アプリケーションは、VMがGC(ポイント)を実行することを決定するのに十分なヒープが得られるまで、オブジェクトを着実に(アップスクロールライン)割り当てます。その後、GCは大量のゴミを回収し(急な落下)、プロセスが再び開始されます。
短いスパイクが上下にわかりにくいです。上向きのスパイクは、若い世代のサイクルを引き起こしている異常な「大きな」割当(短い生涯オブジェクトの)を表す可能性があります。下向きのスパイクは、「メモリ圧迫」に応答して解放されるキャッシュされたオブジェクトを表している可能性があります。
スパイクをよりよく理解したい場合は、GCログメッセージを見て、それらをグラフと関連付ける必要があります。
関連する問題
- 1. なぜXcodeはLocalized.stringsファイルがこのように見えるように見えるのですか?
- 2. なぜこのコンボボックスはこのように見えますか?
- 3. ログイン後のタブバー - なぜこのように見えますか?
- 4. なぜこのように見えますか?
- 5. Javaでヒープメモリ使用量の視覚的なグラフを時間軸で取得する
- 6. なぜ私のTreeViewはこのように見えるのですか?
- 7. メソッドアクセスがフィールドアクセスより速いように見えるのはなぜですか?
- 8. Three.js - これらのアイテムの影がこのように見えるのはなぜですか?
- 9. 私のアプリがWindows 95 GUIを使用しているように見えるのはなぜですか?
- 10. コンポーネントがWindows Classicのように見えるのはなぜですか?
- 11. なぜIONICプッシュ通知がJavascriptアラートのように見えるのですか?
- 12. チェックボックスがそのように見えるのはなぜですか?
- 13. Canvas.FillTextメソッドが間違った座標を使用するように見えるのはなぜですか?
- 14. 単純なグラフの問題のように見える
- 15. なぜIFパラメータがIFパラメータのように見えないのですか?
- 16. ヒープメモリが不足しているのはなぜですか?
- 17. Javaプログラムとしての非ヒープメモリ使用量のわずかな差異
- 18. このレイアウトは、それが想定されているように見えないのはなぜですか?
- 19. Unity 5:なぜ私のシーンはこのように見えますか?
- 20. なぜ量子化されたグラフの推論は、元のグラフを使用するよりもはるかに時間がかかりますか?
- 21. このように見えるjson配列をループする方法。 C#とFacebookのグラフAPIを使用
- 22. このObjective Cコールがハングアップしているように見えるのはなぜですか?
- 23. なぜLinearLayoutがこのように見えるのですか(要素間の空白)?
- 24. "clock()"でCPU使用量が過剰になるのはなぜですか?
- 25. 背景クリップを使用しているように見えないのはなぜですか?
- 26. 私のROC曲線はなぜVのように見えるのですか?
- 27. Igniteヒープメモリの使用
- 28. SSHが有効な接続設定を覚えているように見えるのはなぜですか?
- 29. なぜ、iOSでglRenderbufferStorageが失敗しているように見えますか?
- 30. "height:100%"のスタイルの要素が100%を超えるように見えるのはなぜですか?
これは、通常、JVMがフルガベージコレクション(フルGC)に入ったときに発生します。 Javaランタイムは、もはや使用されていないメモリを解放しようとしますが、使用されているよりも速くメモリを消去することはできません。ある時点で、JVMはメモリ不足になり、ある程度のスペースを空ける必要があります。完全なGCに入ります。これは参照されていないすべてのデータを解放しようとする世界のプロセスを止めることです。慎重でないと異常なエラーが発生する可能性があります。GCが長くなるほど多くのオブジェクトを取得できます。 – flakes
この質問はあなたにも役立ちます[なぜ鋸歯状のグラフですか?](https://stackoverflow.com/questions/7219532/why-a-sawtooth-shaped-graph) – flakes