Ну тут смысл в том, что если я рисую спрайт-расходуется ресурс. Я спрайт нарисовал-ресурс задействованный на рисование должен быть освобожден, а он, как Вы говорили когда-то, может освободиться не понятно когда-вот в чем проблема то. Ну нарисовал я спрайт-он виден на экране но не работает-зачем его удалять? Он мне нужен будет потом или мне надо его удалить, чтобы потом нарисовать опять и потратить опять ресурс, который не освобождается???Mr. Kibernetik wrote:Система архивирует память тех приложений, которые неактивны, и сохраняет ее на диск. Потом восстанавливает, если приложение становится активным.
Но это Вам ничем не поможет.
Если Ваше активное приложение требует у системы память и не освобождает ее в процессе работы - система считает память активной и занятой. Система ведь не может внезапно удалить у Вас какой-нибудь спрайт с экрана просто потому, что ей нехватает памяти на новый спрайт. Ведь если Вы создали спрайт и не удаляете его - значит он Вам нужен. Система держит его в активном доступе, раз Вы сами его не освобождаете.
Если система будет по своему усмотрению (как в случае с фоновыми приложениями) архивировать Ваши данные, то это скажется на плавности работы Вашей программы - она будет подтормаживать в самый неподходящий момент.
Футбол. Премьер-лига 2014-2015
- Фант
- Posts: 1363
- Joined: Sat Nov 30, 2013 10:01 am
- My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
- Location: Россия,Санкт-Петербург
- Flag:
- Contact:
Re: Футбол. Премьер-лига 2014-2015
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Футбол. Премьер-лига 2014-2015
Нет, это не так.
Если Вы рисуете в спрайте, то никакой ресурс (кроме ЦПУ) не расходуется. Нарисовали Вы что-то в спрайте или нет - никакого значения с точки зрения памяти не имеет. Еще раз: процесс рисования памяти не занимает.
Теперь что занимает память: создание спрайта, даже пустого. Сколько и чего Вы потом туда нарисуете никакого значения уже не имеет - на памяти это никак не скажется. При этом Вы даже заранее можете рассчитать сколько у системы Вы возьмете памяти, создав спрайт: 4 байта на пиксел (именно пиксел, а не точку, поскольку у ретины идет по 4 (!) пиксела на точку).
Теперь самое важное: пока Вы спрайт не удалите, он будет у системы занимать память, и она ее никак не освободит - система считает эту память активно занятой спрайтом.
То, что я Вам рассказывал об освобождении памяти системой - это касалось УЖЕ УДАЛЕННОГО СПРАЙТА, когда Вы системе сообщили, что спрайт Вам больше не нужен. Тогда система сама решает когда и как освобождать эту память - Вас это уже никак не касается, ведь это теперь память системы, а не Вашей программы. Система такую память может освободить сразу же (если она тут же Вам понадобилась), или освободить гораздо позже, если памяти сейчас и так на все хватает.
Если Вы рисуете в спрайте, то никакой ресурс (кроме ЦПУ) не расходуется. Нарисовали Вы что-то в спрайте или нет - никакого значения с точки зрения памяти не имеет. Еще раз: процесс рисования памяти не занимает.
Теперь что занимает память: создание спрайта, даже пустого. Сколько и чего Вы потом туда нарисуете никакого значения уже не имеет - на памяти это никак не скажется. При этом Вы даже заранее можете рассчитать сколько у системы Вы возьмете памяти, создав спрайт: 4 байта на пиксел (именно пиксел, а не точку, поскольку у ретины идет по 4 (!) пиксела на точку).
Теперь самое важное: пока Вы спрайт не удалите, он будет у системы занимать память, и она ее никак не освободит - система считает эту память активно занятой спрайтом.
То, что я Вам рассказывал об освобождении памяти системой - это касалось УЖЕ УДАЛЕННОГО СПРАЙТА, когда Вы системе сообщили, что спрайт Вам больше не нужен. Тогда система сама решает когда и как освобождать эту память - Вас это уже никак не касается, ведь это теперь память системы, а не Вашей программы. Система такую память может освободить сразу же (если она тут же Вам понадобилась), или освободить гораздо позже, если памяти сейчас и так на все хватает.
- Фант
- Posts: 1363
- Joined: Sat Nov 30, 2013 10:01 am
- My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
- Location: Россия,Санкт-Петербург
- Flag:
- Contact:
Re: Футбол. Премьер-лига 2014-2015
Ну я имел ввиду рисование спрайта-это его создание.
Тоесть получается моя глубокая ошибка в том, что в своих программах сразу создаю все спрайты которые могут быть задествованны вообще в программе!? Тоесть если брать программу этого поста алгоритм создания спрайтов следующий:
экран заставка создаю один спрайт мяч после удаляю
Экран календарь -создаю три спрайта, при выходе с этого экрана удаляю
Экран Сайты-создаю спрайты сайтов-выхожу удаляю и т. Далее?
Тоесть получается моя глубокая ошибка в том, что в своих программах сразу создаю все спрайты которые могут быть задествованны вообще в программе!? Тоесть если брать программу этого поста алгоритм создания спрайтов следующий:
экран заставка создаю один спрайт мяч после удаляю
Экран календарь -создаю три спрайта, при выходе с этого экрана удаляю
Экран Сайты-создаю спрайты сайтов-выхожу удаляю и т. Далее?
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Футбол. Премьер-лига 2014-2015
Да, конечно.
Именно по этой причине большие игры грузят "уровни" - загрузка уровня позволяет удалить старые объекты и создать новые, которые будут нужны на ближайшем этапе.
У Вас ни в коем случае не должно быть занято ресурсов более, чем необходимо в данный момент. Вы конечно можете заготавливать их на будущее, если этого требует плавность работы и если позволяет память, но уж удалять ненужные - это просто обязательно.
Именно по этой причине большие игры грузят "уровни" - загрузка уровня позволяет удалить старые объекты и создать новые, которые будут нужны на ближайшем этапе.
У Вас ни в коем случае не должно быть занято ресурсов более, чем необходимо в данный момент. Вы конечно можете заготавливать их на будущее, если этого требует плавность работы и если позволяет память, но уж удалять ненужные - это просто обязательно.
- Фант
- Posts: 1363
- Joined: Sat Nov 30, 2013 10:01 am
- My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
- Location: Россия,Санкт-Петербург
- Flag:
- Contact:
Re: Футбол. Премьер-лига 2014-2015
Ну просто супер! Просвятили . Особенно с расчётом спрайтов! Возьму в дальнейшем на вооружение!Mr. Kibernetik wrote:Да, конечно.
Именно по этой причине большие игры грузят "уровни" - загрузка уровня позволяет удалить старые объекты и создать новые, которые будут нужны на ближайшем этапе.
У Вас ни в коем случае не должно быть занято ресурсов более, чем необходимо в данный момент. Вы конечно можете заготавливать их на будущее, если этого требует плавность работы и если позволяет память, но уж удалять ненужные - это просто обязательно.
Я представлял все иначе... Если прячу спрайт то памяти занятой ноль ...
Интерфейс получается тоже самое? Спрятал это не значит что он не занимает память?
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Футбол. Премьер-лига 2014-2015
Да, спрятать - это не значит освободить память. Объект все так же существует и занимает память - он просто не отображается на экране.
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Футбол. Премьер-лига 2014-2015
Дело в том, что освобождение памяти и выделение памяти для нового объекта - это довольно длительный процесс.
А "спрятать" и "показать" должно работать мгновенно, без тормозов.
А "спрятать" и "показать" должно работать мгновенно, без тормозов.
- Фант
- Posts: 1363
- Joined: Sat Nov 30, 2013 10:01 am
- My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
- Location: Россия,Санкт-Петербург
- Flag:
- Contact:
Re: Футбол. Премьер-лига 2014-2015
И крайний вопрос на сегодня
Если я загрузил программу, потом вторую программу загружаю в sB : весь ресурс занятый первой программой (если он мешает второй программе освобождается? Накопления получается никакого нет?
Если я загрузил программу, потом вторую программу загружаю в sB : весь ресурс занятый первой программой (если он мешает второй программе освобождается? Накопления получается никакого нет?
- Mr. Kibernetik
- Site Admin
- Posts: 4786
- Joined: Mon Nov 19, 2012 10:16 pm
- My devices: iPhone, iPad, MacBook
- Location: Russia
- Flag:
Re: Футбол. Премьер-лига 2014-2015
При запуске следующей программы вся память освобождается.
Переполнение памяти при запуске все новых и новых программ - это будет серьезной ошибкой приложения.
Переполнение памяти при запуске все новых и новых программ - это будет серьезной ошибкой приложения.
- Фант
- Posts: 1363
- Joined: Sat Nov 30, 2013 10:01 am
- My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
- Location: Россия,Санкт-Петербург
- Flag:
- Contact:
Re: Футбол. Премьер-лига 2014-2015
Тоже было ошибочным моим представлением! Спасибо! Продуктивная беседа параллельно еще погуглил про принцип создания спрайтов...Mr. Kibernetik wrote:При запуске следующей программы вся память освобождается.
Переполнение памяти при запуске все новых и новых программ - это будет серьезной ошибкой приложения.