我有一个简单的测试代码,它将-XX:MetaspaceSize和-XX:MaxMetaspaceSize设置为相同的值.我认为metaspace不应该动态调整大小.但是从我的测试(检查VisualVM GC的Metaspace图并通过jstat打印日志),我看到元空间从低值增长到我设置的最大值.那么-XX:MetaspaceSize不能正常工作吗?
try {
while(true){
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(A.class);
enhancer.setUseCache(false);
enhancer.setCallback((MethodInterceptor) (obj, method, args1, methodProxy) -> methodProxy.invokeSuper(obj, args1));
enhancer.create();
Thread.sleep(50);
}
} catch (Throwable throwable) {
throwable.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
-XX:MetaspaceSize=10m -XX:MaxMetaspaceSize=10m
Run Code Online (Sandbox Code Playgroud)
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)
Run Code Online (Sandbox Code Playgroud)
C:\Users\dyu>jstat -gc 12336 1000 20
S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT …Run Code Online (Sandbox Code Playgroud)