В мобильных устройствах памяти в разы меньше, чем на настольных, поэтому эту память нужно чистить намного тщательнее.
Очистка памяти в firemonkey отличается от той же VCL, поэтому я приведу немного теории и кода по удалению объектов(на которые выделяется память) и закрытию форм(close и free в мобильных приложениях только прячут форму).
Очистка памяти выделенной под объекты
Начнем с того, что на самых известных мобильных платформах Андроид и iOS все объекты получили новое поле - счетчик ссылок(RefCount). Если счетчик станет равным нулю, то объект автоматически удалится. При ссылке на объект счетчик увеличивается на единицу. Название этого механизма - ARC (Automatic Reference Counting).
Используем два метода очистки памяти - DisposeOf и Free.
c[r].DisposeOf;//объект удаляется из списка, все ресурсы используемые им будут распущены, но память выделенная под объект еще не очищена.
c[r]:=nil;// Удаляем ссылки на объект, ем самым очищая память
c[r].Parent:=nil;//убираем объект из структуры объектов, удаляя его из родительского контрола Parent=nill
c[r].Free;//вызываем free
c[r] := nil; // обнуляем счетчик на объект из массива()
Примечание: в Delphi XE6 скорее всего будет достаточно одного вызова Free, дальше все будет сделано автоматически.
Закрытие формы в мобильных приложениях
Методы close и free не закрывают форму а только прячут ее. Чтобы закрыть форму и очистит память, выделенную под нее, нужно повешать дополнительный обработчик на закрытие формы onClose:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := TCloseAction.caFree;
end;
Вот вроде бы и все, удачи!