Я хочу удалить созданный мной объект (овал, который следует за вами), но как мне это сделать?
delete follower1;
не сработало.
РЕДАКТИРОВАТЬ:
Хорошо, я дам еще немного контекста. Я делаю небольшую игру с овалом, которым вы можете управлять, и овалом, который следует за вами. Теперь у меня есть файлы с именами: DrawPanel.class, этот класс рисует все на экране и обрабатывает столкновения, звуки и т. Д. У меня есть own.class, который представляет собой овал, следующий за игроком. У меня есть entity.class, которым вы можете управлять. И если игрок пересекается с последователем, я хочу, чтобы мой объект игрока был удален. Как я это делаю:
public void checkCollisions(){
if(player.getBounds().intersects(follower1.getBounds())){
Follower1Alive = false;
player.health = player.health - 10;
}
}
Ответы:
Вы должны удалить ссылки на него, присвоив null или оставив блок, в котором он был объявлен. После этого он будет автоматически удален сборщиком мусора (не сразу, а со временем).
Пример 1:
Пример 2:
Не то, что вы сейчас ищете, но к вашему сведению: вы можете вызвать сборщик мусора с помощью вызова System.gc ()
источник
System.gc()
как правило, не является хорошей идеей , поскольку на самом деле он может игнорироваться JVM.null
присвоение GC определенным признаком того, что этот объект должен быть очищен от мусора при следующем вызове GC? * Присвоениеnull
объектам коллекции (спискам, массивам) помечает их для очистки? stackoverflow.com/questions/449409/…onPause
?Ваш C ++ показывает.
Здесь нет
delete
java нет, и все объекты создаются в куче. В JVM есть сборщик мусора, который полагается на счетчики ссылок.Как только на объект больше нет ссылок, он становится доступным для сбора сборщиком мусора.
myObject = null
не может этого делать; например:Все это устанавливает ссылку
myObject
на null, это не влияет на объект, на которыйmyObject
когда-то указали, за исключением простого уменьшения счетчика ссылок на 1. ПосколькуmyOtherObject
все еще ссылается на этот объект, он еще не доступен для сбора.источник
onPause
?Если вы хотите, чтобы объект исчез, установите для его ссылки значение null.
Установка ссылки на null повысит вероятность того, что объект будет обработан сборщиком мусора, пока нет других ссылок на объект.
источник
onPause
?Удалять объекты в java не нужно. Когда нет ссылки на объект, он будет автоматически собран сборщиком мусора.
источник
onPause
?Вы можете удалить ссылку, используя
null
.Допустим, у вас есть класс
A
:Последний оператор удалит ссылку на объект,
a
и этот объект будет "собран мусором" JVM. Это один из самых простых способов сделать это.источник
onPause
?Да, java - это сборщик мусора, он удалит память за вас.
источник
источник