В таких языках, как C / C ++, создавать и уничтожать объекты - обязанность разработчика. Но если программист не выполняет свой долг, может возникнуть недостаток памяти для создания объекта, и программа может закончиться **вызовом OutOfMemoryErrors** .
Java освобождает программиста от задачи управления памятью и сама восстанавливает память, занятую объектами, которые больше не используются. Сбор мусора в java осуществляется потоком-демоном, называемым **сборщиком мусора** . **JVM (виртуальная машина Java)** вызывает его, когда появляется нехватка памяти (в куче) для новых объектов.
* Циклические зависимости не считаются ссылкой, поэтому, если объект X ссылается на объект Y, а объект Y ссылается на объект X, и у них нет никаких других живых ссылок, то оба объекта X и Y уйдут в сборщик мусора.
* Несмотря на то, что уничтожение объектов не входит в задачи программиста, сделать проект недоступным после его использования (а значит и пригодным для сборщика мусора) является хорошей практикой программирования.
1. Использование метода _**System.gc ()**_ : системный класс содержит статический метод gc() для запроса JVM для запуска сборщика мусора.
2. Использование _**метода Runtime.getRuntime().gc()**_ : класс Runtime позволяет приложению взаимодействовать с JVM, в котором работает приложение. Следовательно, используя свой метод gc(), мы можем запросить JVM для запуска Collector мусора.
* Объекты имеют ресурсы, связанные с ними. Это их обязанность освобождать ресурсы.
* Finalize () объявляется в классе Object и вызывается сборщиком мусора один раз, перед уничтожением объекта. Объект может предпринять любое последнее действие, используя этот метод jst, прежде чем его область будет исправлена сборщиком мусора.
* finalize () присутствует в классе Object со следующим прототипом.
```java
protected void finalize() throws Throwable
```
## ПРИМЕЧАНИЕ 1 :
1. Метод finalize (), вызываемый сборщиком мусора, а не JVM. Хотя Garbage Collector является одним из модулей JVM.
2. Метод finalize () класса объекта имеет пустую реализацию, поэтому рекомендуется переопределить метод finalize () для утилизации системных ресурсов или для выполнения другой очистки.
3. Метод finalize () никогда не вызывается более одного раза для любого заданного объекта.
4. Если исключенное исключение выбрано методом finalize (), исключение игнорируется и завершается завершение этого объекта.