¿Qué objetos son elegibles para GC?

class CardBoard {
  Short story = 200;
  CardBoard go(CardBoard cb) {
    cb = null;
    return cb;
  }
  public static void main(String[] args) {
    CardBoard c1 = new CardBoard();
    CardBoard c2 = new CardBoard();
    CardBoard c3 = c1.go(c2);
     System.out.println("c3 value : "+c3);
     c1 = null;
     System.out.println("c1 value : "+c1);
     System.out.println("c2 value : "+c2);
    // do Stuff
  } 
}

Este es un ejemplo del examen simulado SCJP6. La pregunta dice: cuando se alcanza // doStuff, ¿cuántos objetos son elegibles para GC? Y la respuesta es (2 objetos) porque: solo un objeto CardBoard (c1) es elegible, pero tiene un objeto de envoltorio corto asociado que también es elegible.

Cuando ejecuto el código, parece que c3 también apunta a nulo ... por lo que habría dicho que 3 objetos son elegibles para GC.

¿Alguien puede guiarme a través de la lógica de este código?

Respuesta 1

CardBoard c1 = nueva CardBoard ();

Crea una CardBoardinstancia y su Shortinstancia. (2 objetos) Asigna la CardBoardreferencia a c1.

CardBoard c2 = nueva CardBoard ();

Crea otra CardBoardinstancia y su Shortinstancia. (2 objetos más) Asigna la CardBoardreferencia a c2.

Cartón c3 = c1.go (c2);

Asigna nulla c3. (El gométodo es un truco para ver si comprende que el argumento de Java pasa la semántica. Si cree que Java usa la transferencia por referencia, podría concluir incorrectamente que c2se establece en nullesta llamada. De hecho, no c2ha cambiado).

c1 = nulo;

Asigna nulla c1. Esto hace que la primera CardBoardinstancia y su Shortinstancia sean inalcanzables, y los candidatos para la recolección de basura.

La segunda CardBoardinstancia y su Shortinstancia todavía son accesibles.

Respuesta: 2

c3 nunca apunta a ningún objeto, siempre es una variable nula. Por lo tanto, el objeto c3 no es elegible para GC

Respuesta: 3

En un proyecto Java, hay dos archivos java con método principal. Las rutas absolutas para estos dos archivos java son: C: \ Desktop \ project1 \ src \ com \ pre \ moveposition1.java y C: \ Desktop \ project1 \ src \ com \ ...

Necesito enviar un pedido de red corto para un servidor de juegos que estoy escribiendo usando Java. Leí sobre el pedido de red, pero no pude encontrar ningún detalle sobre un corto que se envía antes de los datos. Alguien podria ...

Esta pregunta es doble, pero con suerte no debería ser irrazonablemente larga de responder, a pesar de su propia extensión. Sin embargo, siéntase libre de responder solo una parte, ¡y lo siento por hacerlo tan exhaustivo! Cuales ...

He creado una GUI usando Swing of Java. Ahora tengo que configurar una imagen sample.jpeg como fondo del marco en el que he colocado mis componentes. ¿Cómo hacer eso?