fixed minor translation flaws (#22675)
This commit is contained in:
committed by
Gregory Gubarev
parent
79a14d3df6
commit
fab74e91d0
@ -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()
|
||||||
|
|
||||||
## Финализация объектов
|
## Финализация объектов
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user