Метод System.gc
(и эквивалент Runtime.gc
) является предложением сборщику мусора о том, что мусор следует собирать, так что это не настоящий способ "принудительного"сборщик мусора ":
Из спецификации API Java для метода System.gc
:
Запускает сборщик мусора.
Вызов метода gc предполагаетчто виртуальная машина Java затрачивает усилия на переработку неиспользуемых объектов, чтобы сделать доступной память, которую они в настоящее время занимают, доступной для быстрого повторного использования. * Когда управление возвращается из вызова метода, виртуальная машина Java сделала все возможное, чтобы освободить пространство извсе выброшенные объекты.
(выделение добавлено.)
Кроме того, при небольшом техническом сборе, даже если сборка мусора все же имела место, имейте в виду, что есть и другиеобъекты, которые присутствуют на виртуальной машине Java, помимо вашей программы, поэтому из-за этого потребуются дополнительные ресурсы памяти.
Один ваЧтобы получить общее представление о том, сколько памяти занимает ваше дерево, нужно проверить использование памяти до и после создания вашего дерева - но учтите, что даже в этом случае во время работы вашего дерева может происходить сборка мусора.встроенный, так что даже это не будет идеальным показателем.
Вероятно, лучший вариант здесь - использовать профилировщик (такой как jvisualvm
, который поставляется с JDK)на самом деле взглянуть на то, сколько кучи используется чем.