Пятница, 15 Ноября 2024, 05:26

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Работа с памятью - выгрузка и загрузка префабов
madmikДата: Четверг, 05 Июня 2014, 21:17 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет!
Очень нужна помощь!
Никак не могу разобраться с работой с памятью и ее очисткой.

Вобщем у меня такая ситуация. Я не могу понять, почему юнити начинает кушать оперативку.
Программу запускаю на IPAD, подключаю к нему XCODE и Профайлер Юнити.
Версия Юнити 4.3.1 Pro.
Занимаемую память тестирую через:
Xcode Вкладка Debug Navigator
Xcode Instruments
Unity Profiler

Делаю следующее:

0) Запускаю пустую сцену.
Занимаемая память XCODE Debug Navigator: 11 mb Instruments: 26.4 mb Unity Profiler: used total 13.2 reserved total 13.7
1) Загружаю префаб prefab = Resources.Load("Room1");
Занимаемая память XCODE Debug Navigator: 30.8 mb Instruments: 49.54 mb Unity Profiler: used total 19.8 reserved total 20.4
2) Делаю инстанс префаба
go = (GameObject)Instantiate(prefab);
go.name = "Room1";
XCODE Debug Navigator: 31.2 mb Instruments: 50 mb Unity Profiler: used total 20 reserved total 20.7
3) Далее делаю уничтожение всех объектов на сцене - память остается также
Transform[] tr = FindObjectsOfType<Transform>();
for (int i = 0; i < tr.Length; i++)
{
GameObject goo = tr[i].gameObject;
if (goo.name != "Main Camera")
{Destroy(goo);
goo = null;}
}
XCODE Debug Navigator: 31.1 mb Instruments: 49.93 mb Unity Profiler: used total 19.8 reserved total 20.4
4) Resources.UnloadUnusedAssets(); - память остается также
5) System.GC.Collect(); - память остается также
6) Делаю UnloadAsset префаба Resources.UnloadAsset(prefab); - память остается также
7) Делаю Resources.UnloadUnusedAssets(); -
XCODE Debug Navigator: 21.9 mb Instruments: 40.79 mb Unity Profiler: used total 13.2 reserved total 13.9
Подтерлось большое количество текстур - видно в профайлере
8) System.GC.Collect(); - память остается также
9) Запускаю чистую сцену - память остается также
Еще один интересный момент:

Если нажимаю круглую кнопку айпада и запускаю другое приложение - тогда видно что память приложения сильно уменьшается и если я открываю приложение - его размер становится первоначальным.- Видимо тут юнити что-то подчищает на нативном уровне...

Ну так вопрос такой.
1) Почему память не освобождается полностью - это видно по Instruments и Xcode - хотя в Profiler мы видим, что вроде нормально все освободилось?
2) Реально ли вообще очистить всю память, чтобы память под приложение опять занимала по минимуму?
3) Правильно ли я вообще все это делаю?

Тестовый проект находится здесь:
http://gfile.ru/aa5on

Заранее большое спасибо за внимание к теме.
RangerДата: Суббота, 07 Июня 2014, 07:35 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
ДА вроде правильно все. Даже, мне кажется этот форс
Цитата madmik ()
System.GC.Collect();
лишний.
Что говорит профайлер юнити при запуске проекта из редактора а не с устройства?




Сообщение отредактировал Ranger - Суббота, 07 Июня 2014, 07:37
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг