In meinem JMeter-Test finde ich, dass JMeter weiterhin die Klassen javascript_gen_cmd__xxx lädt und der Test den von mir eingestellten Durchsatz nicht erreichen kann.
Wenn ich in JVisualVM auf die Schaltfläche "GC ausführen" klicke, werden die Klassen entladen und der Durchsatz wird erreicht.
Ich denke, es wäre hilfreich, wenn ich angeben könnte, wann der GC stattfinden sollte. Zum Beispiel, wenn die Gesamtzahl der geladenen Klassen eine bestimmte Anzahl erreicht.
Ich habe -XX versucht: MetaspaceSize = 120M, aber es löste keine Klassenentladung aus, wenn die Metaspace-Nutzung 120 MB erreichte.
Antworten:
0 für die Antwort № 1Etwas wie -XX:MaxMetaspaceFreeRatio=30 -XX:MinMetaspaceFreeRatio=10
sollte dazu führen, dass es schnell voll wird und somit Klassenentladungs-GCs auslösen.
Alternative -XX:+ExplicitGCInvokesConcurrent -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
und mit CMS oder G1 und Brennen System.gc()
über einen Timer kann auch funktionieren.