В разработке для Android, каковы последствия этого: «Отладчик и сборщик мусора в настоящее время слабо интегрированы». - PullRequest
3 голосов
/ 16 марта 2012

В самом низу этой страницы об отладке на сайте разработчиков Android написано

Отладчик и сборщик мусора в настоящее время слабо интегрированы.ВМ гарантирует, что любой объект, о котором знает отладчик, не будет собирать мусор до тех пор, пока отладчик не отключится.Это может привести к накоплению объектов с течением времени, пока подключен отладчик.Например, если отладчик видит работающий поток, связанный объект Thread не собирается сборщиком мусора даже после завершения потока.

Итак, каковы точные последствия здесь?Должен ли я считать, что:

  1. Любой вызов Log внутри потока приведет к тому, что этот поток никогда не будет собран?
  2. Любой вызов Log внутри метода, который живет в потоке пользовательского интерфейса, чтоВызов изнутри потока X означает, что поток X никогда не будет собран?
  3. Любой вызов журнала внутри метода, который даже содержит конструкцию нового экземпляра потока или runnable, может быть невозможен для сборки мусора?

Если это так:

  1. Применяется ли это, только если приложение явно помечено как отлаживаемое в AndroidManifest.xml?
  2. Применяется ли оно, даже еслиустройство не активно подключено к отладчику?

1 Ответ

1 голос
/ 30 апреля 2012

Если отладчик в данный момент не подключен, GC работает как обычно.Звонки в журнал не являются особенными в любом случае.Пока отладчик подключен, нет никаких гарантий, что какой-либо объект будет собран, потому что отладчик может содержать дополнительные ссылки на все, что он чувствует.Как только отладчик отключается, следующий GC будет происходить как обычно и собирать объекты, которые были сохранены ранее.Невозможно точно сказать, какие объекты не будут собраны, поскольку отладчик может делать все, что ему нужно.

Простое чтение вывода logcat не означает «присоединение отладчика».Это относится конкретно к фактическому отладчику Java, например, установка точек останова, пошаговое выполнение.

...