ヒープ ダンプを分析して、休止状態のキャッシュ設定が原因かどうかを判断しようとしています。
問題のオブジェクトの多くのインスタンスは、「org.hibernate.internal.util.collections.IdentityMap」によって参照されます。Hibernate によって参照されるオブジェクトのインスタンスの正確な数を返す OQL クエリを作成するにはどうすればよいですか?
運が良ければ、関数を機能させることができるかもしれません。dominatorof()
次のようなことを試してください。
SELECT * FROM ".*" o WHERE classof(dominatorof(o)).@displayName.contains("class org.hibernate.internal.util.collections.IdentityMap")
ただし、これにより MAT はヒープ内のすべてのオブジェクトを通過するようになるため、結果を返すのに長い時間がかかります (かなり大きなヒープがあると仮定します)。ただし、実際の問題は、dominatorof()
関数に一貫性がないため、すべてのオブジェクトが見つからない可能性があることです。クラスのリストがある場合は、クエリを高速化し、正しいドミネーターを取得していることを確認できる場合があります。たとえば、X と Y がクラス名の場合、「.*」の代わりに「X|Y」を正規表現として使用し、次のクエリを実行して結果を確認できます。
SELECT dominatorof(o) FROM "X|Y" o