Футбол. Премьер-лига 2014-2015

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Футбол. Премьер-лига 2014-2015

Post by Фант »

Mr. Kibernetik wrote:Система архивирует память тех приложений, которые неактивны, и сохраняет ее на диск. Потом восстанавливает, если приложение становится активным.
Но это Вам ничем не поможет.
Если Ваше активное приложение требует у системы память и не освобождает ее в процессе работы - система считает память активной и занятой. Система ведь не может внезапно удалить у Вас какой-нибудь спрайт с экрана просто потому, что ей нехватает памяти на новый спрайт. Ведь если Вы создали спрайт и не удаляете его - значит он Вам нужен. Система держит его в активном доступе, раз Вы сами его не освобождаете.
Если система будет по своему усмотрению (как в случае с фоновыми приложениями) архивировать Ваши данные, то это скажется на плавности работы Вашей программы - она будет подтормаживать в самый неподходящий момент.
Ну тут смысл в том, что если я рисую спрайт-расходуется ресурс. Я спрайт нарисовал-ресурс задействованный на рисование должен быть освобожден, а он, как Вы говорили когда-то, может освободиться не понятно когда-вот в чем проблема то. Ну нарисовал я спрайт-он виден на экране но не работает-зачем его удалять? Он мне нужен будет потом или мне надо его удалить, чтобы потом нарисовать опять и потратить опять ресурс, который не освобождается???

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Футбол. Премьер-лига 2014-2015

Post by Mr. Kibernetik »

Нет, это не так.
Если Вы рисуете в спрайте, то никакой ресурс (кроме ЦПУ) не расходуется. Нарисовали Вы что-то в спрайте или нет - никакого значения с точки зрения памяти не имеет. Еще раз: процесс рисования памяти не занимает.
Теперь что занимает память: создание спрайта, даже пустого. Сколько и чего Вы потом туда нарисуете никакого значения уже не имеет - на памяти это никак не скажется. При этом Вы даже заранее можете рассчитать сколько у системы Вы возьмете памяти, создав спрайт: 4 байта на пиксел (именно пиксел, а не точку, поскольку у ретины идет по 4 (!) пиксела на точку).
Теперь самое важное: пока Вы спрайт не удалите, он будет у системы занимать память, и она ее никак не освободит - система считает эту память активно занятой спрайтом.
То, что я Вам рассказывал об освобождении памяти системой - это касалось УЖЕ УДАЛЕННОГО СПРАЙТА, когда Вы системе сообщили, что спрайт Вам больше не нужен. Тогда система сама решает когда и как освобождать эту память - Вас это уже никак не касается, ведь это теперь память системы, а не Вашей программы. Система такую память может освободить сразу же (если она тут же Вам понадобилась), или освободить гораздо позже, если памяти сейчас и так на все хватает.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Футбол. Премьер-лига 2014-2015

Post by Фант »

Ну я имел ввиду рисование спрайта-это его создание.
Тоесть получается моя глубокая ошибка в том, что в своих программах сразу создаю все спрайты которые могут быть задествованны вообще в программе!? Тоесть если брать программу этого поста алгоритм создания спрайтов следующий:
экран заставка создаю один спрайт мяч после удаляю
Экран календарь -создаю три спрайта, при выходе с этого экрана удаляю
Экран Сайты-создаю спрайты сайтов-выхожу удаляю и т. Далее?

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Футбол. Премьер-лига 2014-2015

Post by Mr. Kibernetik »

Да, конечно.
Именно по этой причине большие игры грузят "уровни" - загрузка уровня позволяет удалить старые объекты и создать новые, которые будут нужны на ближайшем этапе.
У Вас ни в коем случае не должно быть занято ресурсов более, чем необходимо в данный момент. Вы конечно можете заготавливать их на будущее, если этого требует плавность работы и если позволяет память, но уж удалять ненужные - это просто обязательно.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Футбол. Премьер-лига 2014-2015

Post by Фант »

Mr. Kibernetik wrote:Да, конечно.
Именно по этой причине большие игры грузят "уровни" - загрузка уровня позволяет удалить старые объекты и создать новые, которые будут нужны на ближайшем этапе.
У Вас ни в коем случае не должно быть занято ресурсов более, чем необходимо в данный момент. Вы конечно можете заготавливать их на будущее, если этого требует плавность работы и если позволяет память, но уж удалять ненужные - это просто обязательно.
Ну просто супер! Просвятили :D . Особенно с расчётом спрайтов! Возьму в дальнейшем на вооружение!
Я представлял все иначе... Если прячу спрайт то памяти занятой ноль :D...
Интерфейс получается тоже самое? Спрятал это не значит что он не занимает память?

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Футбол. Премьер-лига 2014-2015

Post by Mr. Kibernetik »

Да, спрятать - это не значит освободить память. Объект все так же существует и занимает память - он просто не отображается на экране.

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Футбол. Премьер-лига 2014-2015

Post by Mr. Kibernetik »

Дело в том, что освобождение памяти и выделение памяти для нового объекта - это довольно длительный процесс.
А "спрятать" и "показать" должно работать мгновенно, без тормозов.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Футбол. Премьер-лига 2014-2015

Post by Фант »

И крайний вопрос на сегодня :D
Если я загрузил программу, потом вторую программу загружаю в sB : весь ресурс занятый первой программой (если он мешает второй программе освобождается? Накопления получается никакого нет?

User avatar
Mr. Kibernetik
Site Admin
Posts: 4786
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Футбол. Премьер-лига 2014-2015

Post by Mr. Kibernetik »

При запуске следующей программы вся память освобождается.
Переполнение памяти при запуске все новых и новых программ - это будет серьезной ошибкой приложения.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Футбол. Премьер-лига 2014-2015

Post by Фант »

Mr. Kibernetik wrote:При запуске следующей программы вся память освобождается.
Переполнение памяти при запуске все новых и новых программ - это будет серьезной ошибкой приложения.
Тоже было ошибочным моим представлением! Спасибо! Продуктивная беседа :D параллельно еще погуглил про принцип создания спрайтов... :D

Post Reply