2014-01-31 4 views
0

В C++ динамически выделенный массив должен быть удален, если он не потерян в памяти. В java мы должны делать то же самое, и если да. Как вы это делаетеУдаление динамического массива в java

+6

Нет, это сбор мусора. – Batty

+0

В Java вам не нужно беспокоиться о «распространенных» утечках памяти ... Встроенный сборщик мусора позаботится об этом ... – TheLostMind

+0

Посмотрите это: http://stackoverflow.com/questions/17647194/do -not-understand-scope-of-objects-in-java-java-newbie-confusion – Nishant

ответ

0

Разработчик не должен беспокоиться о освобождении памяти в java. Сборщик мусора Java делает это за вас. Вы можете прочитать, как это работает here

1

На языке программирования Java динамическое распределение объектов достигается с помощью нового оператора. Созданный объект использует некоторую память и память остается выделенной до тех пор, пока не будут ссылки на использование объекта. Когда ссылок нет для объекта, предполагается, что он больше не нужен, и память, занятая объектом, может быть восстановлена. Нет необходимости в явной необходимости уничтожать объект, поскольку java автоматически обрабатывает де-распределение. Техника, которая выполняет это, известна как сборка мусора. Программы, которые не де-распределяют память, могут в конечном итоге сработать, когда в системе не останется памяти. Говорят, что эти программы имеют утечки памяти.

В Java сбор мусора происходит автоматически в течение жизни Java-программы, устраняя необходимость де-выделения памяти и избежания утечек памяти. На языке C задача программиста заключается в том, чтобы распределить выделенную память динамически с помощью функции free(). Подробнее на http://www.javatutorialhub.com/java-garbage-collection.html#wpewoJfMWffgXd8O.99

1

Я не понимаю ваше определение динамического массива. Вы имеете в виду коллекцию предметов, где ее длина неизвестна, инициализируя ее? Если да, вы говорите о таких коллекциях, как ArrayList.

Вам не нужно беспокоиться об удалении ваших объектов. JVM позаботится о ваших объектах, когда они больше не используются, или когда they're out of scope.

JVM анализирует выполнение вашего кода и вызывает специальный компонент с именем Garbage Collector, который очистит код выполнения от бесполезных/вне объектов области видимости.

Например, если у вас есть этот код:

if(condition) 
{ 
    string myStr = "test"; 
    //other code here 
} 

переменная myStr, потому что она больше не используется (это из сферы действия if заявления), будет отмечен JVM быть мусора ,

Смежные вопросы