Dúvida em exercício sobre Garbage Collection

Pessoal, comecei a estudar para certificação no começo de abril, estou na metade do livro da kathy e encontrei um exercício sem resposta.

Segue o exercício:

  1. Identifique quantos objetos estão eligiveis para coleta na linha marcada com //aqui.

         [code]class Programa {
    
         main() {
    
               Pessoa p = new Pessoa();
    
               p.idade = 10;
    
               fazAmizade(p);
    
               //aqui
    
               public static void fazAmizade (Pessoa p1) {
    
                     Pessoa p2 = new Pessoa;
    
                     p2.idade = 11;
                     p1.amigo = p2;
                     Pessoa foreverAlone = new Pessoa();
    
         }
         class Pessoa {
    
               int idade;
               Pessoa amigo;
         }
    

[/code]

A resposta seria apenas um objeto está eligível para coleta? (referenciado por foreverAlone)

Anexei um arquivo com o desenho do stack/heap se puderem dar uma olhada tb.

Está correto?


Na minha opinião, sim. Ambas as referências são utilizadas, p1 e p2. Todavia, a referência “foreverAlone” não faz absolutamente nada.
Ela foi criada mas não é utilizada, portanto, totalmente elegível ao GC.