为什么在Java 8中堆内存与元空间一起上升?
我正在做一个小测试,以了解元空间内存(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");
}
请参阅下图: