Страница 1 из 2

Как можно проследить, чем забивается память?

СообщениеДобавлено: 16 ноя 2017, 02:15
jimmm
Здравствуйте.
Как можно проследить чем забивается оперативная память?
У меня игра без загрузки сцен, верней миссии загружаются инстантом и дестроем объектов, но с каждой запущенной миссией, память постоянно забивается. По чуть чуть, но всеравно через 10 таких миссий игра может упасть. Как можно проследить и почистить память в такой ситуации? Просто дистрои не помагают как я понял, не вычищают память.

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 16 ноя 2017, 02:22
waruiyume
Resources.UnloadUnusedAssets

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 16 ноя 2017, 07:18
Bill Gates
jimmm писал(а):Здравствуйте.
Как можно проследить чем забивается оперативная память?
У меня игра без загрузки сцен, верней миссии загружаются инстантом и дестроем объектов, но с каждой запущенной миссией, память постоянно забивается. По чуть чуть, но всеравно через 10 таких миссий игра может упасть. Как можно проследить и почистить память в такой ситуации? Просто дистрои не помагают как я понял, не вычищают память.


https://bitbucket.org/Unity-Technologies/memoryprofiler

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 16 ноя 2017, 07:57
jimmm
waruiyume писал(а):Resources.UnloadUnusedAssets

Да у меня стоит это, но каждый раз, каждое завершение миссии показывает что удалено 0 unused объектов, не сильно работает этот способ, если дистроить объекты, я так понимаю он не выгружает ненужные загруженные текстуры из памяти.

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 16 ноя 2017, 13:43
DbIMok
а профайлер что показывает?

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 16 ноя 2017, 22:55
jimmm
DbIMok писал(а):а профайлер что показывает?

Ну у меня пока версия 4.7 там ничего не показывает, только рост загрузки памяти. Или может я что-то не увидел..

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 21 ноя 2017, 07:55
jimmm
Проследил закономерность, в память выгружаются звуки, листы звуков (шаги и тд),
Как можно вычищать эти звуки, и я там понимаю листы звуков??
Объекты дестроятся фотоном, и наверное поэтому не удаляются из памяти.

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 21 ноя 2017, 08:36
Bill Gates
Я же тебе дал ссылку на инструмент. В нем все прекрасно видно, зачем гадать?

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 21 ноя 2017, 15:27
DbIMok
Bill Gates писал(а):Я же тебе дал ссылку на инструмент

jimmm писал(а):у меня пока версия 4.7

Unity 5.3a4 has a new very lowlevel memory profiler API

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 22 ноя 2017, 07:18
Bill Gates
DbIMok писал(а):
Bill Gates писал(а):Я же тебе дал ссылку на инструмент

jimmm писал(а):у меня пока версия 4.7

Unity 5.3a4 has a new very lowlevel memory profiler API


В чем проблема перевести копию проекта на нужную версию и посмотреть? Сомневаюсь, что перевод вызовет большие трудности.

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 27 ноя 2017, 09:20
jimmm
А возможно ли как-то выгружать из памяти текстуры которые не попадают в поле зрения камеры, или которые выходят из поля зрения камеры?

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 27 ноя 2017, 10:30
Tolking
Конечно возможно! Только никто это не реализовал т.к. никому ненужно слайд шоу при движении камеры связанное с выгрузкой и загрузкой ресурсов объектов выходящих и выходящих из/в фрустум камеры... Да и делать каждому объекту свой материал со своей текстурой слишком много памяти занимает...

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 27 ноя 2017, 11:23
jimmm
Tolking писал(а):Да и делать каждому объекту свой материал со своей текстурой слишком много памяти занимает...

И как можно этот момент оптимизировать?

По поводу камеры, я имел ввиду, что можноли единомоментно выгружать не используемые перед камерой текстуры? Типа, объект умер-дистройнулся, и в этот момент освободить память от текстур дестройнутого объекта?

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 27 ноя 2017, 11:57
Tolking
Ну оптимизировать очень просто! Текстуры сделать 16х16... Памяти будет мало использоваться...
Если текстуры не используются больше не где, то GC.Collect () их удалит вероятнее всего... Но за это когда будет объект с такой текстурой инстанситься, он будет инстанситься дольше. И очистка принудительная будет фризить если чистить много.

Re: Как можно проследить, чем забивается память?

СообщениеДобавлено: 27 ноя 2017, 12:56
jimmm
Tolking писал(а):Ну оптимизировать очень просто! Текстуры сделать 16х16... Памяти будет мало использоваться...
Если текстуры не используются больше не где, то GC.Collect () их удалит вероятнее всего... Но за это когда будет объект с такой текстурой инстанситься, он будет инстанситься дольше. И очистка принудительная будет фризить если чистить много.

Понятно, спасибо.