Если есть какой-либо объект, который все еще имеет путь к корню, содержащий ссылку на другой объект, объект, на который имеется ссылка, не будет собираться мусором.Так что, если вы создаете объект A, у него есть подобъект A1.Затем создайте объект B и, что когда-либо означает, передайте ссылку на A1 объекту B. Даже если объект A является GC'd A1, не будет, потому что объект B по-прежнему содержит ссылку.(В вашем примере A & B будет gc'd ... C не будет)
Вы можете поэкспериментировать с механикой сбора мусора, явно указав системе выполнить сбор в определенные моменты времени с помощью System.gc();
звонок.Кроме того, вы можете переопределить объект finalize в объекте, чтобы точно определить, когда данный объект собран.Я бы удалил переопределенный вызов завершения, когда вы закончите тестирование.