Quero excluir um objeto que criei (um oval que segue você), mas como faria isso?
delete follower1;
não funcionou.
EDITAR:
Ok, vou dar mais contexto. Estou fazendo um pequeno jogo com um oval que você pode controlar e um oval que o segue. Agora eu tenho arquivos chamados: DrawPanel.class, esta classe desenha tudo na tela e lida com colisões, sons, etc. Eu tenho um inimigo.class, que é o oval após o jogador. Eu tenho um entity.class, que é o player que você pode controlar. E se o jogador se cruzar com o seguidor, quero que meu objeto jogador seja excluído. Do jeito que estou fazendo:
public void checkCollisions(){
if(player.getBounds().intersects(follower1.getBounds())){
Follower1Alive = false;
player.health = player.health - 10;
}
}
Respostas:
Você deve remover as referências a ele atribuindo nulo ou deixando o bloco onde foi declarado. Depois disso, ele será excluído automaticamente pelo coletor de lixo (não imediatamente, mas eventualmente).
Exemplo 1:
Exemplo 2:
Não é algo que você esteja procurando atualmente, mas para sua informação: você pode invocar o coletor de lixo com a chamada System.gc ()
fonte
System.gc()
geralmente não é uma boa ideia , já que pode realmente ser ignorado pela JVM.null
atribuição é um sinal definitivo para o GC de que este objeto deve ser limpo com Garbaged na próxima invocação do GC? * Atribuirnull
a objetos de coleção (listas, matrizes) marca-os para limpeza? stackoverflow.com/questions/449409/…onPause
?Seu C ++ está aparecendo.
Não há
delete
em java, e todos os objetos são criados no heap. A JVM possui um coletor de lixo que conta com contagens de referência.Quando não houver mais referências a um objeto, ele se tornará disponível para coleta pelo coletor de lixo.
myObject = null
pode não fazer isso; por exemplo:Tudo o que isso faz é definir a referência
myObject
como nula, não afeta o objetomyObject
uma vez apontado, exceto para simplesmente diminuir a contagem de referência em 1. Uma vez quemyOtherObject
ainda se refere a esse objeto, ele ainda não está disponível para ser coletado.fonte
onPause
?Se você quiser ajudar um objeto a desaparecer, defina sua referência como null.
Definir a referência como null tornará mais provável que o objeto seja coletado como lixo, desde que não haja outras referências ao objeto.
fonte
onPause
?Você não precisa excluir objetos em java. Quando não houver referência a um objeto, ele será coletado pelo coletor de lixo automaticamente.
fonte
onPause
?Você pode remover a referência usando
null
.Digamos que você tenha aula
A
:A última instrução removerá a referência do objeto
a
e esse objeto será "coletado como lixo" pela JVM. É uma das maneiras mais fáceis de fazer isso.fonte
onPause
?Sim, java é coletado como lixo, ele excluirá a memória para você.
fonte
fonte