fixed minor translation flaws (#22675)

This commit is contained in:
Zhannur Diyas
2018-11-17 23:09:44 +05:00
committed by Gregory Gubarev
parent 79a14d3df6
commit fab74e91d0

View File

@ -1,28 +1,28 @@
--- ---
title: Garbage Collection title: Garbage Collection
localeTitle: Вывоз мусора localeTitle: Сборщик мусора
--- ---
# Коллекция мусора в Java # Сборщик мусора в Java
В таких языках, как C / C ++, разработчик обязан создавать и уничтожать объекты. Но если программист не выполняет свой долг, достаточная память может быть недоступна для создания нового объекта, и программа может закончиться **вызовом OutOfMemoryErrors** . В таких языках, как C / C ++, создавать и уничтожать объекты - обязанность разработчика. Но если программист не выполняет свой долг, может возникнуть недостаток памяти для создания объекта, и программа может закончиться **вызовом OutOfMemoryErrors** .
Java освобождает программиста от задачи управления памятью и сама восстанавливает память, занятую объектами, которые больше не используются. Сбор мусора в java осуществляется демонами, называемыми **сборщиком мусора** . **JVM (виртуальная машина Java)** вызывает его, когда нехватка памяти (кучи) для новых объектов. Java освобождает программиста от задачи управления памятью и сама восстанавливает память, занятую объектами, которые больше не используются. Сбор мусора в java осуществляется потоком-демоном, называемым **сборщиком мусора** . **JVM (виртуальная машина Java)** вызывает его, когда появляется нехватка памяти (в куче) для новых объектов.
## Когда объект становится пригодным для сбора мусора? ## Когда объект становится пригодным для сбора мусора?
* Объект становится подходящим для коллекции мусора, если он недоступен ни от каких живых потоков или от каких-либо статических ссылок. * Объект становится пригодным для сбора мусора, если он недоступен ни для каких живых потоков или каких-либо статических ссылок.
* Объект становится подходящим для коллекции мусора, если все ссылки являются нулевыми. * Объект становится пригодным для сбора мусора, если все ссылки являются `null`.
```java ```java
Integer n = new Integer(); Integer n = new Integer();
n = null; //the Integer object is no longer accessible n = null; //объект класса Integer больше не доступен
``` ```
* Циклические зависимости не считаются ссылкой, поэтому, если объект X имеет ссылку объекта Y, а объект Y имеет ссылку объекта X, и у них нет другой ссылки на живые ссылки, то оба объекта X и Y будут иметь право на сбор мусора. * Циклические зависимости не считаются ссылкой, поэтому, если объект X ссылается на объект Y, а объект Y ссылается на объект X, и у них нет никаких других живых ссылок, то оба объекта X и Y уйдут в сборщик мусора.
## Как вручную сделать объект подходящим для коллекции мусора? ## Как вручную сделать объект подходящим для сбора мусора?
* Несмотря на то, что программист не уничтожает объекты, это хорошая практика программирования, чтобы сделать объект недоступным (таким образом, подходящим для GC) после его использования. * Несмотря на то, что уничтожение объектов не входит в задачи программиста, сделать проект недоступным после его использования (а значит и пригодным для сборщика мусора) является хорошей практикой программирования.
* Как правило, существует четыре разных способа сделать объект подходящим для сбора мусора. * Как правило, существует четыре разных способа сделать объект подходящим для сбора мусора.
1. Обнуление ссылочной переменной 1. Обнуление ссылочной переменной
@ -33,10 +33,10 @@ Java освобождает программиста от задачи упра
## Способы обращения к JVM для запуска сборщика мусора 1 ## Способы обращения к JVM для запуска сборщика мусора 1
* Хотя создание объекта, имеющего право на сбор мусора, зависит от единственного усмотрения JVM, чтобы запустить сборщик мусора, чтобы его уничтожить. * Хотя создание объекта, имеющего право на сбор мусора, зависит от единственного усмотрения JVM, чтобы запустить сборщик мусора, чтобы его уничтожить.
* Мы также можем запросить JVM для запуска сборщика мусора. Это можно сделать двумя способами: * Мы также можем запросить JVM запустить сборщик мусора. Это можно сделать двумя способами:
1. Использование метода _**System.gc ()**_ : системный класс содержит статический метод gc () для запроса JVM для запуска сборщика мусора. 1. Использование метода _**System.gc ()**_ : системный класс содержит статический метод gc() для запроса JVM для запуска сборщика мусора.
2. Использование _**метода Runtime.getRuntime (). Gc ()**_ : класс Runtime позволяет приложению взаимодействовать с JVM, в котором работает приложение. Следовательно, используя свой метод gc (), мы можем запросить JVM для запуска Collector мусора. 2. Использование _**метода Runtime.getRuntime().gc()**_ : класс Runtime позволяет приложению взаимодействовать с JVM, в котором работает приложение. Следовательно, используя свой метод gc(), мы можем запросить JVM для запуска Collector мусора.
```java ```java
// Java program to request // Java program to request
@ -48,23 +48,23 @@ Java освобождает программиста от задачи упра
Test test1 = new Test(); Test test1 = new Test();
Test test2 = new Test(); Test test2 = new Test();
// Nullifying the reference variable // Обнуление ссылки
test1 = null; test1 = null;
// requesting JVM for running Garbage Collector // запрос JVM запустить сборщик мусора
System.gc(); System.gc();
// Nullifying the reference variable // Обнуление ссылочной переменной
test2 = null; test2 = null;
// requesting JVM for running Garbage Collector // запрос JVM запустить сборщик мусора
Runtime.getRuntime().gc(); Runtime.getRuntime().gc();
} }
@Override @Override
// finalize method is a method which is called on object once // метод finalize() запускается объектом единожды
// before garbage collector is destroying it and reclaiming its memory // перед тем как сборщик мусора уничтожит его и восстановит занимаемую им память
protected void finalize() throws Throwable protected void finalize() throws Throwable
{ {
System.out.println("Garbage collector is called"); System.out.println("Garbage collector is called");
@ -84,7 +84,7 @@ Java освобождает программиста от задачи упра
Заметка : Заметка :
1. Нет никакой гарантии, что любой из двух вышеперечисленных методов определенно будет запускать сборщик мусора. 1. Нет никакой гарантии, что любой из двух вышеперечисленных методов определенно будет запускать сборщик мусора.
2. Вызов System.gc () фактически эквивалентен вызову: Runtime.getRuntime (). Gc () 2. Вызов System.gc() фактически эквивалентен вызову: Runtime.getRuntime().gc()
## Финализация объектов ## Финализация объектов