/ / Java 8では、JVMパラメータを使用して、クラスをアンロードする時期(またはどのような条件で)を制御できますか? [重複] - Java、ガベージコレクション、クラスローダー、メタスペース

Java 8では、JVMパラメータを使用して、いつクラスをアンロードするか(またはどのような条件で)制御できるのでしょうか? [重複] - Java、ガベージコレクション、クラスローダー、メタスペース

私のJMeterテストでは、JMeterがクラスjavascript_gen_cmd__xxxをロードし続けていることがわかりました。テストでは、設定したスループットに達しませんでした。

JConsoleからのクラスのロード JVisualVMで "Perform GC"ボタンをクリックすると、クラスがアンロードされ、スループットに達します。

だから私はGCがいつ起こるべきかを示すことができれば助けになると思う。 たとえば、ロードされたクラスの総数が特定の数に達したときなどです。

私は-XX:MetaspaceSize = 120Mを試しましたが、メタスペースの使用量が120MBに達したときにクラスのアンロードをトリガーしませんでした。

回答:

回答№1は0

何かのようなもの -XX:MaxMetaspaceFreeRatio=30 -XX:MinMetaspaceFreeRatio=10 それがすぐにいっぱいになり、クラスアンロードGCを引き起こすはずです。

あるいは -XX:+ExplicitGCInvokesConcurrent -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses CMSまたはG1を使用して起動する System.gc() タイマーを介しても動作する可能性があります。