Sun JVMでは、クラスローダーによってロードされるクラスはpermgenスペースに配置され、gcされることはありません。(クラスローダーがスコープ外にならない限り)JRockitが代わりに同じデータをヒープに置くことは私の理解です。そのデータはガベージコレクションの対象になりますか?
ありがとう。
この問題は、クラスが割り当てられる場所とは何の関係もありません。問題は、クラスローダーが常にクラスへの参照を保持することです。つまり、クラスローダーがガベージコレクションを取得しない限り、クラスをガベージコレクションすることはできません。
PermGenメモリは不足していて高価であるため、この問題はHotSpotでより明白になります。
ただし、もう1つの重要な点は、PermGenはSunで使い果たされることが多く、他のJVMが別のそれほど制限されていないスペースに割り当てる可能性があることです。