2010-02-04 3 views
4

Я читал о том, что я сделал объект явно собранным мусором, что во многих отношениях. Так что я хотел узнать некоторые из способов сделать его явно собранным мусоромспособы создания объекта для явного сбора мусора

+0

Какой язык и реализация вы имеете в виду ? Существует много языков GC, и каждая реализация может быть бесплатной для добавления своих нестандартных функций. –

+0

Извините за это. но я выбрал только один тег, java. это значит, что это связано с java-языком – GuruKulki

ответ

1

System.gc должен сообщать JVM о том, чтобы явно выполнить сборщик мусора.

Но для как некоторые методы, которые я знаю, чтобы сделать объект явно мусор, собранным являются:

Назначение ссылки на нее указать нулевое значение EX: Animal а = новое животного(); a = null

Назначение его ссылки для указания на другой объект. EX: Animal a1 = new Animal(); a1 = new Animal();

+2

Назначение всех ссылок на объект на «null», только делает объект готовым к сбору мусора. Это не делает сборку мусора немедленно, и она может оставаться в памяти в течение длительного времени после этого. Вызов 'System.gc()' также не гарантирует, что будут удалены все объекты без ссылок. Прочтите другие ответы. – MAK

6

Нет никакой возможности для явной сборки мусора.

Вы можете «вежливо попросить» виртуальную машину для сбора мусора по телефону:

System.gc(); 

, но это не гарантирует, что будет.

Вызов метода gc предполагает, что виртуальная машина Java тратит усилия на повторное использование неиспользуемых объектов, чтобы сделать память, которую они в настоящее время занимают, для быстрого повторного использования. Когда управление возвращается из вызова метода, виртуальная машина Java приложила все усилия, чтобы освободить место от всех отброшенных объектов.

и «лучшее усилие» может быть отложить сборку мусора.

О том, как сделать объекты elligible для сбора мусора чтения Effective Java, Chapter 2

+2

Мне нравится термин «лучшее усилие». Это в значительной степени означает «может быть, если мне так хочется». –

2

Вы можете явно сделать объект допущен к участию в процессе сборки мусора, установив все ссылки на него в null.

Это не вызовет сборщик мусора, но когда сбор начнется, он соберет этот объект.

Лучше всего разрешить сборщик мусора Java делать все автоматически самостоятельно. Он был оптимизирован до такой степени, что он будет лучше и эффективнее, чем все, что вы когда-либо хотели бы сделать.

1

Вам не стоит беспокоиться о том, чтобы заставить GC, если вы не пишете, скажем, инструмент, такой как VisualVM.

NetBeans, IntelliJ, VisualVM и многие другие могут все сила a GC, а не подсказка, но действительно сила. Используя JVMTI, вы можете заставить GC.

BUT еще раз вы, вероятно, делаете NOT хотите это сделать.

Вы сила a GC (не подсказка) с использованием ForceGarbageCollection от JVMTI.

Это, скорее всего, действительно НЕ ДЕЛАЮТ (это действительно может повторять).

Авторитетная информация по этому вопросу, если вы действительно хотите знать (но вы, вероятно, нет), как заставить, на самом деле, GC:

http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection