Мобильные платформыФорумОбщее

Нехватка памяти и падение приложения (iOS, Marmalade)

Страницы: 1 2 3 Следующая »
#0
17:28, 24 июня 2012

iOS
Marmalade

В мармеладе приложение сразу выделяет себе кучу фиксированного размера для работы с памятью. Довольно удобно.
Но вот что касается текстур (gles2), то память под них выделяется за пределами этой кучи и когда упирается в предел, то приложение
сразу же закрывается без каких-либо сообщений.

Я такое наблюдаю только со своей игрой, остальные, весьма прожорливые на память игры, запускаются и работают всегда.
То есть на мою игру виляет даже количество открытых приложений. Чем больше их открыто в фоне, тем меньше у меня памяти под текстуры.

Как кто с этим борется? Может я чего-то недопонимаю?

Спасибо.

#1
18:01, 24 июня 2012

glap
какого размера текстуры ?

возможна проблема в выделении временного буфера для загрузки текстуры, я описывал это здесь : http://forum.boolean.name/showthread.php?t=16880

#2
18:18, 24 июня 2012

Я упёрся в проблему на новом айпаде с ретиной, там текстурные атласы весьма внушительного размера. Зачастую приближаются к максимальному размеру текстуры в es 2.0.

Спасибо за статью, но вот ведь какая штука. Когда я выделяю память из кучи Мармелада и её не хватает, то он кидает ошибку, которую видно прежде чем приложение закрылось.
В моём случае никаких ошибок нет, просто быстрый и стремительный вылет.

Я уже попробовал оставить всё (в том числе выделение буфера под текстуру), но убрать загрузку в vram. Всё работает.

#3
19:21, 24 июня 2012

glap
посмотри дебагером чем вылетает, и кидаются ли memory warning'и от iOS, если получишь SIGKILL то это довольно интересно :)

ps. чуствую что тебе придется разковырять мармелад

#4
20:11, 24 июня 2012

В мармеладе нет как такового механизма отладки на устройстве. Можно только сообщения кидать, да впихнуть некий отладочный загрузчик, который никак в данном случае не поможет.
Ну и какой-то коллбэк ставить на системные сообщения тоже нельзя, он всё это держит в своих недрах, дабы обеспечить иллюзию кроссплатформенности.

#5
20:14, 24 июня 2012

Вообще проблема серьёзная, уверен есть какое-то решение. Тут как минимум несколько человек выпустили игры под Мармеладом. Товарисчи, нужна помощь!

#6
21:36, 24 июня 2012

glap
> Вообще проблема серьёзная, уверен есть какое-то решение. Тут как минимум
> несколько человек выпустили игры под Мармеладом. Товарисчи, нужна помощь!

А в чем собственно вопрос? Что на иосе приложение закрывается по мемери варнинг? Да, это так.

#7
21:42, 24 июня 2012

glap
> В мармеладе нет как такового механизма отладки на устройстве. Можно только
> сообщения кидать, да впихнуть некий отладочный загрузчик, который никак в
> данном случае не поможет.

Не верю! Да и гугл не верит.

Marmalade Mac supports native device debugging, with live console output, breakpoint and code step-though, using Xcode and the --iphone option. Launch the app's MKB from the command line with "--iphone" to create a native iOS Xcode project with full iOS debugging features. Note that the compiled app uses a special static library version of the iOS loader, which means it will differ from a normal Marmalade app in subtle ways and is NOT supported for App Store submission.

ЗЫ: В мармеладе не работал.

#8
21:42, 24 июня 2012

Вопрос в том, как это решают другие разработчики.

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

#9
21:44, 24 июня 2012

jaguard
Через xCode да, но мы с винды работаем, тут с этим всё запущено.

#10
21:59, 24 июня 2012

Jun 24 21:55:57 unknown Pigs[6058] <Warning>: Received memory warning.
Jun 24 21:55:57 unknown Pigs[6058] <Warning>:  [0x3f03cd98] DEVICE: iOS low memory warning occured
Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilemail[0x2b4b]) Exited: Killed: 9
Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilephone[0x5c3d]) Exited: Killed: 9
Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.tunein.TuneInRadio[0x5b]) Exited: Killed: 9
Jun 24 21:55:57 unknown UserEventAgent[12] <Notice>: jetsam: kernel termination snapshot being created
Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:G86VE2FRC3.com.mostro.kamikazepigs[0xd41b]) Exited: Killed: 9
Jun 24 21:55:57 unknown SpringBoard[75] <Warning>: Application 'Mail' exited abnormally with signal 9: Killed: 9
Jun 24 21:55:57 unknown SpringBoard[75] <Warning>: Application 'FaceTime' exited abnormally with signal 9: Killed: 9
Jun 24 21:55:57 unknown SpringBoard[75] <Warning>: Application 'TuneIn Radio' exited abnormally with signal 9: Killed: 9
Jun 24 21:55:58 unknown SpringBoard[75] <Warning>: Application 'Pigs' exited abnormally with signal 9: Killed: 9
Jun 24 21:55:58 unknown ReportCrash[6059] <Notice>: Saved crashreport to /Library/Logs/CrashReporter/LowMemory-2012-06-24-215558.plist using uid: 0 gid: 0, synthetic_euid: 0 egid: 0
Jun 24 21:55:58 unknown kernel[0] <Debug>: launchd[6060] Builtin profile: MobileMail (sandbox)
Jun 24 21:55:58 unknown kernel[0] <Debug>: launchd[6062] Builtin profile: container (sandbox)
Jun 24 21:55:58 unknown kernel[0] <Debug>: launchd[6062] Container: /private/var/mobile/Applications/3C986115-CF1C-457F-823F-5507DDE6F281 [69] (sandbox)


В общем помимо самой игры (Pigs) грохает ещё кучу программ.

#11
22:26, 24 июня 2012

glap
> Через xCode да, но мы с винды работаем, тут с этим всё запущено.
>

Купите макбук - без этого все-равно нормальной разработки не получится.
Что касается вашей проблемы, то тут все очевидно из лога - ваша программа сжирает всю память и умирает сама - скорее всего бага в логике загрузки, какой-нибудь бесконечный цикл или что-нибудь подобное. То что остальные программы завершаются - совершенно нормально, это типичное поведение ОС в условиях критической нехватки памяти.

#12
22:31, 24 июня 2012

Ну я полагал, что типичным поведение должна быть вызгрузка остальных программ, чтобы моей хватило памяти. Ведь если я сам предварительно убиваю их, то игра работает нормально. Никакой ошибки в логике нет.

#13
22:39, 24 июня 2012

glap
может ты за один раз хочешь слишком много памяти и оно киляет вообще всё ?

>Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilemail[0x2b4b]) Exited: Killed: 9
>Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.apple.mobilephone[0x5c3d]) Exited: Killed: 9
>Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:com.tunein.TuneInRadio[0x5b]) Exited: Killed: 9
>Jun 24 21:55:57 unknown com.apple.launchd[1] <Notice>: (UIKitApplication:G86VE2FRC3.com.mostro.kamikazepigs[0xd41b]) Exited: Killed: 9

первые три - как бы не ресурсоёмкие приложения особо

#14
22:52, 24 июня 2012

glap
> Ну я полагал, что типичным поведение должна быть вызгрузка остальных программ,
> чтобы моей хватило памяти. Ведь если я сам предварительно убиваю их, то игра
> работает нормально. Никакой ошибки в логике нет.

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

Страницы: 1 2 3 Следующая »
Мобильные платформыФорумОбщее

Тема в архиве.