在Java 8中,是否可以使用JVM参数来控制何时(或在什么条件下)卸载class?
In Java 8, is it possible to use JVM parameter to control when(or in what condition) to unload class?
在我的 JMeter 测试中,我发现 JMeter 不断加载 classes javascript_gen_cmd__xxx,这使得测试无法达到我设置的吞吐量。
当我在 JVisualVM 中单击 "Perform GC" 按钮时,classes 被卸载并达到吞吐量。
所以我认为如果我能指出 GC 应该发生的时间会有所帮助,
例如当加载总数class达到一定数量时。
我尝试了 -XX:MetaspaceSize=120M,但当元空间使用量达到 120MB 时它没有触发 class 卸载。
类似 -XX:MaxMetaspaceFreeRatio=30 -XX:MinMetaspaceFreeRatio=10
的东西应该会导致它快速填满,从而触发 class-卸载 GC。
或者 -XX:+ExplicitGCInvokesConcurrent -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
并使用 CMS 或 G1 并通过计时器触发 System.gc()
也可能有效。
在我的 JMeter 测试中,我发现 JMeter 不断加载 classes javascript_gen_cmd__xxx,这使得测试无法达到我设置的吞吐量。
所以我认为如果我能指出 GC 应该发生的时间会有所帮助, 例如当加载总数class达到一定数量时。
我尝试了 -XX:MetaspaceSize=120M,但当元空间使用量达到 120MB 时它没有触发 class 卸载。
类似 -XX:MaxMetaspaceFreeRatio=30 -XX:MinMetaspaceFreeRatio=10
的东西应该会导致它快速填满,从而触发 class-卸载 GC。
或者 -XX:+ExplicitGCInvokesConcurrent -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
并使用 CMS 或 G1 并通过计时器触发 System.gc()
也可能有效。