Могу ли я проверить, существует ли другая ссылка на объект в Java? - PullRequest
3 голосов
/ 28 сентября 2010

Можно ли проверить наличие других ссылок на объект в Java?

Даже если операция неэффективна, я хотел бы при отладке утверждать, что данный объект будет собирать мусор, как только указанная ссылка выпадает из области видимости.

Возможно ли это?

Спасибо

Ответы [ 3 ]

2 голосов
/ 28 сентября 2010

Для этого не существует стандартного Java API.

Однако ваша конкретная JVM может иметь возможность использовать специальные диагностические API JVM.

2 голосов
/ 28 сентября 2010

Вы можете просто переопределить метод finalize , а затем установить точку останова внутри метода. Как только объект будет собран, вы увидите в отладчике. Однако обратите внимание, что крайне нежелательно переопределять метод финализации в производственных системах, поскольку он плохо влияет на сборщик мусора. Поэтому после отладки удалите метод.

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

Как сказал Андерсон о API JVM.Класс string использует метод intern для проверки того, что объект уже существует в пуле.Они используют этот класс API

   public String intern() {
          return VM.intern(this);
   }

org.apache.harmony.kernel.vm.VM, который является нативным кодом.

...