способы сделать объект явно собранным мусором - PullRequest
4 голосов
/ 04 февраля 2010

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

Ответы [ 4 ]

6 голосов
/ 04 февраля 2010

Нет способа явного сбора мусора.

Вы можете вежливо попросить виртуальную машину выполнить сборку мусора, позвонив по номеру:

System.gc();

но это не гарантируется.

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

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

Как сделать объекты понятными для сборки мусора, читайте Эффективная Java, Глава 2

2 голосов
/ 04 февраля 2010

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

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

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

1 голос
/ 04 февраля 2010

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

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

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

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

Тем не менее, вы, вероятно, действительно НЕ хотите это сделать (действительно повторяет).

Authoritativeинформация о предмете, если вы действительно хотите знать (но, вероятно, не знаете), как заставить GC: * ​​1021 *

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

1 голос
/ 04 февраля 2010

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

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

Назначение ссылки на ноль Пример: животное a = новое животное (); а = ноль

Назначение ссылки на другой объект. Пример: животное a1 = новое животное (); a1 = новое животное ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...