Если я не понимаю, мы смотрим здесь на загруженные классы, а не на экземпляры.
Когда ваш код впервые ссылается на класс, JVM заставляет ClassLoader выйти и извлечь информацию о классе из файла .class или подобного.
Я не уверен, при каких условиях это выгрузит класс. Конечно, он никогда не должен выгружать какой-либо класс со статической информацией.
Таким образом, я ожидаю, что шаблон будет примерно такой же, как ваш, когда ваше приложение запускается в области и ссылается на новые классы, поэтому число загружаемых классов будет увеличиваться и увеличиваться.
Однако мне кажется странным две вещи:
- Почему это так линейно?
- Почему не плато?
Я бы ожидал, что он будет иметь тенденцию к росту, но в виде шаткой линии, а затем уменьшится по мере увеличения, поскольку JVM уже загрузила большинство классов, на которые ссылается ваша программа. Я имею в виду, что в большинстве приложений существует ограниченное число классов.
Вы как-то динамически создаете новые классы на лету?
Я бы предложил запустить более простое тестовое приложение через тот же отладчик, чтобы получить базовый вариант. Тогда вы могли бы рассмотреть возможность реализации своего собственного ClassLoader, который выплевывает некоторую отладочную информацию, или, возможно, есть инструмент, чтобы сделать его отчетным.
Вам нужно выяснить, что это за загружаемые классы.