Quiero eliminar un objeto que creé (un óvalo que te sigue), pero ¿cómo lo haría?
delete follower1;
no funcionó.
EDITAR:
Bien, daré más contexto. Estoy haciendo un pequeño juego con un óvalo que puedes controlar y un óvalo que te sigue. Ahora tengo archivos con el nombre: DrawPanel.class, esta clase dibuja todo en la pantalla y maneja colisiones, sonidos, etc. Tengo un enemigo.class, que es el óvalo que sigue al jugador. Tengo una entity.class, que es el jugador que puedes controlar. Y si el jugador se cruza con el seguidor, quiero que se elimine mi objeto de jugador. La forma en que lo estoy haciendo:
public void checkCollisions(){
if(player.getBounds().intersects(follower1.getBounds())){
Follower1Alive = false;
player.health = player.health - 10;
}
}
Respuestas:
Debe eliminar las referencias asignando nulo o dejando el bloque donde se declaró. Después de eso, el recolector de basura lo eliminará automáticamente (no inmediatamente, pero eventualmente).
Ejemplo 1:
Ejemplo 2:
No es algo que esté buscando actualmente, pero para su información: puede invocar al recolector de basura con la llamada System.gc ()
fuente
System.gc()
es generalmente una buena idea , ya que la JVM puede ignorarlo.null
asignación un signo definitivo para el GC de que este objeto se va a eliminar y limpiar en la próxima invocación del GC? * ¿Asignarnull
a los objetos de colección (listas, matrices) los marca para su limpieza? stackoverflow.com/questions/449409/…onPause
?Se muestra su C ++.
No hay
delete
en java, y todos los objetos se crean en el montón. La JVM tiene un recolector de basura que se basa en recuentos de referencias.Una vez que no hay más referencias a un objeto, el recolector de basura lo puede recolectar.
myObject = null
no puede hacerlo; por ejemplo:Todo lo que esto hace es establecer la referencia
myObject
en nula, no afecta al objetomyObject
una vez señalado, excepto para simplemente disminuir el recuento de referencias en 1. Dado quemyOtherObject
todavía se refiere a ese objeto, aún no está disponible para ser recopilado.fuente
onPause
?Si desea que un objeto desaparezca, establezca su referencia en nulo.
Establecer la referencia en nulo hará que sea más probable que el objeto sea recolectado como basura, siempre que no haya otras referencias al objeto.
fuente
onPause
?No es necesario eliminar objetos en java. Cuando no hay ninguna referencia a un objeto, el recolector de basura lo recopilará automáticamente.
fuente
onPause
?Puede eliminar la referencia utilizando
null
.Digamos que tienes clase
A
:La última instrucción eliminará la referencia del objeto
a
y ese objeto será "recolectado como basura" por JVM. Es una de las formas más sencillas de hacerlo.fuente
onPause
?Sí, java es basura recolectada, eliminará la memoria por usted.
fuente
fuente