der*_*eck 4 jvm java-8 metaspace
我有一个简单的测试代码,它将-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 FGC FGCT GCT
8192.0 8192.0 0.0 2207.8 49152.0 43399.2 131072.0 16.0 7168.0 6777.9 768.0 677.7 1 0.015 0 0.000 0.015
8192.0 8192.0 0.0 2207.8 49152.0 48166.1 131072.0 16.0 7168.0 6777.9 768.0 677.7 1 0.015 0 0.000 0.015
8192.0 8192.0 2592.0 0.0 49152.0 3691.9 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 7537.9 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 11378.9 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 16180.3 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 20021.3 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 24822.5 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 28663.5 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 33466.8 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 37312.8 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 42114.1 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 2592.0 0.0 49152.0 45955.1 131072.0 24.0 8832.0 8403.6 896.0 795.9 2 0.020 0 0.000 0.020
8192.0 8192.0 0.0 3488.0 49152.0 1925.1 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
8192.0 8192.0 0.0 3488.0 49152.0 6737.6 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
8192.0 8192.0 0.0 3488.0 49152.0 11758.5 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
8192.0 8192.0 0.0 3488.0 49152.0 15608.7 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
8192.0 8192.0 0.0 3488.0 49152.0 29056.4 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
8192.0 8192.0 0.0 3488.0 49152.0 34196.6 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
8192.0 8192.0 0.0 3488.0 49152.0 39339.7 131072.0 32.0 10752.0 10225.1 1024.0 934.2 3 0.026 0 0.000 0.026
Run Code Online (Sandbox Code Playgroud)
Hol*_*ger 10
你误解了什么-XX:MetaspaceSize:
-XX:MetaspaceSize =大小
设置分配的类元数据空间的大小,该空间将在第一次超出时触发垃圾回收.根据使用的元数据量,增加或减少垃圾收集的阈值.
该选项的名称可能被视为具有误导性,除非您将其解释为"预期大小",因此显然它应在超出时触发垃圾收集(而最大大小定义硬限制).
有一个开放的错误报告,JDK-8067205调用一个选项来设置初始元空间大小.
| 归档时间: |
|
| 查看次数: |
1876 次 |
| 最近记录: |