Это может быть глупый вопрос, но я мало знаю о сборке мусора. Когда я искал информацию об этом, стало ясно, что обнуление объекта устанавливает его счетчик ссылок на 0, поэтому он становится подходящим для сборки мусора.
Поэтому я хотел проверить это и сделал фрагмент, он использует около 5 МБ памяти. Когда я удаляю фрагмент с помощью менеджера транзакций, обнуляю фрагмент и явно вызываю сборщик мусора (GC.collect()), выделенная память остается прежней, и я не получаю обратно 5 МБ.
В чем может быть причина(ы) этого?
public void Unselect()
{
var ft = this.SupportFragmentManager.BeginTransaction ();
switch (selected)
{
case 8:...
case 9:
//FindViewById (Resource.Id.fragment_container).SetBackgroundDrawable (null);
ft.Hide (carFragment);
ft.Remove (carFragment);
Console.WriteLine ("NULLIFY");
carFragment = null;
break;
case 10:...
}
ft.Commit ();
carFragment — это фрагмент, в котором есть фрагмент поддержки Google Maps V2.
nullifying an object sets it's reference count to 0
. Нет. Он уменьшает счетчик, потому что этой ссылки больше не существует, но могут быть другие ссылки, сохраняющие объект. Также в вашей памяти находятся классы, используемые в объекте, лениво загружаемые, которые не удаляются из памяти. И вы могли бы смотреть на утечку памяти - person njzk2   schedule 12.12.2014