/ / Ist es in Java 8 möglich, den JVM-Parameter zu verwenden, um zu steuern, wann (oder in welchem ​​Zustand) eine Klasse entladen werden soll? [Duplikat] - Java, Garbage-Collection, Classloader, Metaspace

Ist es in Java 8 möglich, den JVM-Parameter zu verwenden, um zu steuern, wann (oder in welchem ​​Zustand) die Klasse entladen wird? [Duplizieren] - Java, Müllsammlung, Klassenlader, Metaspace

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.

Klassenladen von JConsole 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 № 1

Etwas 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.