GCは「削除」されたオブジェクトの種類を判定するために(簡単な)方法はありますか?

ジョナサン・シルベスター:

私は約1.6億長さはそれぞれのダース・アレイを作成し、Javaプログラムを有しています。アレイは、プリミティブ(文字、ショート、及びフロート)を含みます。私のアルゴリズムでは、私は、GCは、私のシステム(Googleクラウド上のWindows VMマシン、16個のCPUコア、64ギガバイトRAM)に公正ビットを実行していること(JProfilerを経由して)気づいたが、私は、なぜGCはとても実行されていることは理解できません多くの場合、総演算CPUパワーの80%を消費します。

だから私は考えた:私は(JVMコマンド/ログのいずれかを介して、または好ましくはちょうどJProfilerをなどプロファイラ経由)を見つけ出すことができれば、それは「ごみ収集」した正確なものをオブジェクト、私が上で何が起こっているのかを理解する機会を持っており、どちらかの簡単な問題を解決できましたJavaが何をしているかの私のより良い理解に基づいて問題や再設計。(私の知る限りでは、私は、オブジェクトの創作を最小限に抑えています;私は何とかGCの問題を引き起こしている場合、私は知らないので、けれどもjdk8パラレルストリーミング機能の多くを使用しません)を決定するためにそこの方法ですどのオブジェクト( GCは、それほど頻繁に実行されているので、難しいですなぜ私がよりよく理解できるように、またはどのオブジェクトタイプ)GCは、任意の特定の時間に収集ごみにしようとしていますか?

インゴ・ケーゲル:

JProfilerを、あなたは、この目的のために割り当て記録を使用することができます。

「録画オブジェクト」ビューでごみ収集のオブジェクトを表示するには、いずれかの「ごみ収集オブジェクト」または「ライブやごみ収集オブジェクト」にツールバーの生存性セレクタを変更します。アロケーションコールツリーと割り当てホットスポットビューのオプション]ダイアログボックスには、同等のドロップダウンがあります。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=221354&siteId=1