アプリが大量のメモリを使用している理由を調べるために、ビジュアル vm の使用を開始します。
私が物事を理解していることを確認するために:
heapdump を介して完全なメモリ マップが取得されます。
メモリ プロファイラーを使用すると (10 個のオブジェクトのみが考慮されるため?) 概要だけが表示されます。
私は正しく理解しましたか?
ありがとう
1) heapdump を使用すると、どのオブジェクトがアプリによって実際に保持され、ヒープを消費しているかを確認できます
2) メモリ プロファイラは、アプリがオブジェクト (+そのクラス) を割り当てる速度を示します。これは主に一時的に割り当てられたオブジェクトで構成されます
(1)主にメモリリークを見つける/ヒープ消費を理解することです
(2) は、オブジェクト割り当てのコスト パフォーマンスを直接的および間接的に (断片化、より多くの gc) パフォーマンスをプロファイリングするために最も使用できます。また、メモリリークの場合、メモリリークを引き起こしているオブジェクトがどこから来たのかを示すことができます。
VisualVM にはメモリ プロファイリング モードがあり、アプリケーションのメモリ割り当てで何が起こっているかを継続的に追跡します。このモードでは、すべてのオブジェクトを追跡する負荷に耐えられないため、妥協点は 10 番目の割り当てごとに追跡することです。一方、[監視] タブにはヒープ ダンプ機能があり、すべてのオブジェクトの完全な詳細を取得できます。heapdump
このダンプは、コマンドラインユーティリティと同等です。