Я делаю небольшой тест, чтобы понять, как работает metaspace memory (Java 8 onwards). Когда я создаю 100 000 классов динамически, память метапространства растет (очевидно), но куча памяти тоже растет. Может кто-нибудь объяснить мне, почему это происходит?
PS: Я запускаю тест со 128 МБ кучи и 128 Мб метапроцесса.
@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");
}
См. Изображения ниже: