Как мне выяснить, что определенный объект в приложении больше не используется? - PullRequest
4 голосов
/ 26 сентября 2010

Как я могу выяснить, что объект (или объекты класса) используется / не используется и готов к сбору GC.или как я могу узнать, что объект не имеет ссылки во время работы приложения.(прежде чем он получит GCed)

Ответы [ 3 ]

2 голосов
/ 01 октября 2010

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

Самый простой способ получить уведомление о том, что объект собирается GCed, - это переопределитьметод finalize ().Примечание: вы должны быть осторожны, что вы делаете в этом методе.Например, он является однопоточным, и блокировка не приведет к очистке объектов.

Другой подход заключается в использовании слабых или программных ссылок и отслеживании ReferenceQueue.Это способ отслеживать, когда объект был обнаружен как доступный для очистки.См. Источник для WeakHashMap для примера.

Примечание: не существует простого способа обнаружить объект, который больше не используется без GC, и если у вас нет GC в течение длительного времени, выпока что не знаю.

0 голосов
/ 26 сентября 2010

Я использую UCDetector (Детектор ненужного кода) Плагин Eclipse. Он покажет вам открытые классы, методы или поля, на которые нет ссылок, и позволит вам легко их удалить.

0 голосов
/ 26 сентября 2010

в Eclipse вы можете щелкнуть правой кнопкой мыши по вашему классу и выбрать References > Project

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