0 голосов
 
1025 просмотров
19.06.2017 / 19:15  Death

Как уничтожить объект?

Как уничтожить объект/класс?

Я удаляю из писка его, но где ещё может он остаться - я не знаю, но память растёт.
Просто null не помогает. Как запустить сборщик мусора?

Открыть спойлер
19.06.2017 / 19:57  aNNiMON
Java он знает...
Ответы
 
2 голоса
 
# 19.06.2017 / 20:10  aNNiMON
Твоя ошибка в постановке вопроса. Тебе не очищать память нужно, а не засорять её.
Для этого нужно поменьше создавать объектов, тем более в цикле, и уж тем более в игровом цикле.
Для поиска проблемных мест используй профилировщик (Ctrl+F2 в NetBeans).

Сборщик мусора запускается и без твоего участия. Если он не смог очистить память, значит, как и сказал aRiGaTo, где-то остались ссылки на ненужные объекты.
Изм. aNNiMON от 19.06.2017 / 20:15
 
2 голоса
 
# 19.06.2017 / 19:54  Arigato
Никак. Внимательнее следи за ссылками между объектами. Скорее всего объекты какой-нибудь коллекции ссылаются на мусор (либо сами ими являются).
19.06.2017 / 19:59  Death
Понятно.
 
0 голосов
 
# 21.06.2017 / 11:55  Aladdin
Интерфейс Disposable.
  1. public interface Disposable {
  2.   void dispose();
  3. }
Реализуй этот интерфейс в тех объектах которые в дальнейшем будут не нужны. В методе dispose() освобождай ресурсы, присвой null или если объект является Disposable вызови dispose() и после присвой null. и так дальше рекурсивно может быть. И следи за объектами которые имеют друг на друга ссылку, они являются утечками памяти. Использую такой подход в своем проекте.
21.06.2017 / 12:00  SeTSeR
А почему бы просто не писать на C++?
21.06.2017 / 12:56  Death
Ну с Disposable, идея то хорошая, то очень абстрактная.
:ps:Мне кажется кто-то пытается на С++ переманить кого-то. :кек2:
21.06.2017 / 13:47  Arigato
Абстракций бояться - на Java не писать
 
-1 голос
 
# 19.06.2017 / 19:20  SeTSeR
Никак. Можно только позвать System.gc(), который, может быть, вызовет сборщик мусора. Нужно ручное управление памятью - юзай C++. Есть ещё вариант покопаться в настройках JVM, но тут я не знаю.
Изм. SeTSeR от 19.06.2017 / 19:22
19.06.2017 / 19:35  Death
System.gc(); не помог.
Всего: 4

Реклама

Мы в соцсетях

tw tg yt gt