我正在做一些测试,以了解元空间内存(Java 8以上)的工作原理.当我动态创建100,000个类时,元空间内存正在增长(显然),但堆内存也在增长.有人可以向我解释为什么会这样吗?
PS:我正在使用128 MB的堆和128 MB的元空间运行测试.
@Test
public void metaspaceTest() throws CannotCompileException, InterruptedException {
ClassPool cp = ClassPool.getDefault();
System.out.println("started");
for (int i = 0; i <= 100000; i++) {
Class c = cp.makeClass("br.com.test.GeneratedClass" + i).toClass();
Thread.sleep(1);
if (i % 10000 == 0) {
System.out.println(i);
}
}
System.out.println("finished");
}
Run Code Online (Sandbox Code Playgroud)
见下图: