私たちはアプリの permgen メモリ スペースをどんどん高くしてきましたが、permgen 領域に食い込んでいる何らかのリークがあるかどうかを調べようとしています。ホット アンデプロイ/再デプロイ アクションは実行しませんが、動的および CGLIB 生成の両方のプロキシが多数あります。また、さまざまなユースケースをサポートするために、いくつかの複雑なクラスローダー ビットも実行しています。これらも、permgen の浪費の一因である可能性があるのではないかと疑っています。
そこで、実行中のアプリで jmap -permstat を実行し、permgen スペースを埋めている可能性があるものについて洞察を得たいと考えています。(permstat の出力から得られる可能性のある手がかりを追跡できるように、ライブ オブジェクトとデッド オブジェクトの両方で通常のヒープ ダンプも実行します)。
ただし、jmap permstat によってリストされた 2400 のクラスローダーのうち、ブートストラップ クラスローダーを除くすべてが「デッド」としてリストされます。アプリは間違いなくライブで動作しているため、これは意味がありません。
私の理解では、クラスローダがガベージ コレクションの対象である場合、jmap はそのクラスローダを「死んだ」と報告しますが、ここでは間違っているに違いありません...
私は何が欠けていますか?ここでの「死んだ」とはどういう意味ですか? グーグルで調べても、私がここで持っている誤解以外の多くの答えは得られません。