Другие языки программирования и технологии

Какой аналог delete из C++ в Java? Есть ли такой, подскажите пожалуйста....

Ви
Виталий
683
Тут правильно насчёт сборки мусора в JAVA замечено, она работает автоматически. Но могут быть у тебя и такие ситуации, когда тебе придётся удалять экземпляры классов вручную. Для этого существует метод finalize().

Этот метод не может быть вызван для одного экземпляра класса дважды. Способен выбросить исключение любого возможного типа (объявление throws Throwable). О том, где ты будешь вызывать этот метод - тоже думай самостоятельно - метод объявлен как protected. И ещё обязательно следи за жизненным циклом объектов - если ты обращаешься к методу finalize(), всегда перед выполнением операций над экземпляром класса проверяй существование экземпляра и обрабатывай исключение NullPointerException.

Самое главное: ПОСТАРАЙСЯ УДЕЛЯТЬ ПОБОЛЬШЕ ВНИМАНИЯ ПРОЕКТИРОВАНИЮ СИСТЕМЫ, И НЕ ДОВОДИТЬ ДЕЛО ДО ВЫЗОВА finalize(). Пользуйся им только там, где это НЕОБХОДИМО.
Илхам Низамиев
Илхам Низамиев
2 926
Лучший ответ
чтонибудь вроде GC.Collect()
но это необязательно, управление памятью происходить автоматически
Cреда выполнения сама производит очистку памяти. В тот момент, когда в куче становится мало места, вызывается сборщик мусора. Он проверяет, на какие объекты больше нет в области видимости ссылок и удаляет ненужные объекты. Можно конечно вызывать сборщик мусора вручную, но это нужно делать в очень исключительных случаях. Можешь пока этим не заморачиваться.
Насколько я понимаю философию Явы, там освобождать объекты не обязательно - там "сборщик мусора" есть, который это сам за вас делает.