Today, after promising some more info to fellow forum members here, I've played a bit with the different approaches to allocating memory under iOS.
During this, I've also played with the unnecessary daemons, which can safely be killed to free up some memory. As the vast majority of dedicated guides are heavily outdated (see e.g. the thread at http://insanelyi.com/topic/10792-kill-mailapp-itunesstored-safari-and-ipodapp-with-script/ - the script errorenously lists itunesstored as directly killable), I've decided to publish the results in a separate (this) guide.
Killing them can be done in both a shell script or, if you compile your app in Xcode, Objective-C. With the latter, just use the "system("killall -9 <daemon name>");" command; for example, "system("killall -9 medialibraryd");". (Note that you can use the same killall command to kill non-daemon apps. Then, you won't need to use the additional "-9". However, you definitely can use it if you want.)
On my rMini running 7.0.6, I was able to free up some 29M by simply killing the following unnecessary, memory-hungry daemons (typical memory usage on this iDevice model in parentheses). Note that I've listed the conditions of their automatic restarting (if at all). Of course 29M isn't much on an 1GB RAM device like the rMini; however, on more memory-constrained devices, freeing up 29M can dramatically increase the stability of the system. Note that these daemons are never killed by the system, unlike with top-level apps like Safari, Skype, Preferences and the like. Also note that I present you here with direct system calls you can quickly integrate into your compiled app. Finally, make absolutely sure you do follow the mini-tutorial of disabling MobileMail in the system-level Settings (right the first item below):
system("killall MobileMail"); // (13M) is automatically restarted until you disable the default "Push" under Mail, Contacts, Calendars > Fetch New data. Unfortunately, upon reboots, it's restarted even after disabling everything in Settings.
// daemons:
system("killall -9 medialibraryd"); // (5M): can be killed; automatically restarts when needed (e.g., when starting playback in the stock Music app)
system("killall -9 storebookkeeperd"); // (5M)
system("killall -9 itunescloudd"); // (1M). Note that itunesstored (13M)can't be easily killed and, it seems, it shouldn't be got rid of: this daemon seems to be quite important and not "just", say, an automatic downloader / update notifier; see http://nabla-c0d3.github.io/
system("killall -9 gamed"); // (10M) can be killed; upon starting a game using Game Center, it'll be restarted. However, until you kill and restart the game, you won't be able to use GC features. Starting the Game Center stock app also restarts it. Disabling the, by default, enabled two switches under Game Invites doesn't automatically disable the daemon – it must be done by hand.
system("killall -9 accountsd"); // (10-13M) it is always loaded, even if you don't configure any fb / twitter / vimeo / flickr accounts in Settings. If you kill it, it'll restart only when an app tries to actively query e.g. the Twitter account. (For example, when you explicitly tap the Twitter / FB icon in, say, Magzter > upper left menu > Invite Friends. That is, it can too be safely killed.
Hope you find this useful.
----------
You can also kill these daemons via SSH. Nevertheless, I'd still go the scripting / compiled binary way for easy execution.
The latter doesn't need special permissions - simply deploying from Xcode will gain you access to killall. (As the users of my previous JB camera tweaks may have already noticed this.)
During this, I've also played with the unnecessary daemons, which can safely be killed to free up some memory. As the vast majority of dedicated guides are heavily outdated (see e.g. the thread at http://insanelyi.com/topic/10792-kill-mailapp-itunesstored-safari-and-ipodapp-with-script/ - the script errorenously lists itunesstored as directly killable), I've decided to publish the results in a separate (this) guide.
Killing them can be done in both a shell script or, if you compile your app in Xcode, Objective-C. With the latter, just use the "system("killall -9 <daemon name>");" command; for example, "system("killall -9 medialibraryd");". (Note that you can use the same killall command to kill non-daemon apps. Then, you won't need to use the additional "-9". However, you definitely can use it if you want.)
On my rMini running 7.0.6, I was able to free up some 29M by simply killing the following unnecessary, memory-hungry daemons (typical memory usage on this iDevice model in parentheses). Note that I've listed the conditions of their automatic restarting (if at all). Of course 29M isn't much on an 1GB RAM device like the rMini; however, on more memory-constrained devices, freeing up 29M can dramatically increase the stability of the system. Note that these daemons are never killed by the system, unlike with top-level apps like Safari, Skype, Preferences and the like. Also note that I present you here with direct system calls you can quickly integrate into your compiled app. Finally, make absolutely sure you do follow the mini-tutorial of disabling MobileMail in the system-level Settings (right the first item below):
system("killall MobileMail"); // (13M) is automatically restarted until you disable the default "Push" under Mail, Contacts, Calendars > Fetch New data. Unfortunately, upon reboots, it's restarted even after disabling everything in Settings.
// daemons:
system("killall -9 medialibraryd"); // (5M): can be killed; automatically restarts when needed (e.g., when starting playback in the stock Music app)
system("killall -9 storebookkeeperd"); // (5M)
system("killall -9 itunescloudd"); // (1M). Note that itunesstored (13M)can't be easily killed and, it seems, it shouldn't be got rid of: this daemon seems to be quite important and not "just", say, an automatic downloader / update notifier; see http://nabla-c0d3.github.io/
system("killall -9 gamed"); // (10M) can be killed; upon starting a game using Game Center, it'll be restarted. However, until you kill and restart the game, you won't be able to use GC features. Starting the Game Center stock app also restarts it. Disabling the, by default, enabled two switches under Game Invites doesn't automatically disable the daemon – it must be done by hand.
system("killall -9 accountsd"); // (10-13M) it is always loaded, even if you don't configure any fb / twitter / vimeo / flickr accounts in Settings. If you kill it, it'll restart only when an app tries to actively query e.g. the Twitter account. (For example, when you explicitly tap the Twitter / FB icon in, say, Magzter > upper left menu > Invite Friends. That is, it can too be safely killed.
Hope you find this useful.
----------
You can also kill these daemons via SSH. Nevertheless, I'd still go the scripting / compiled binary way for easy execution.
The latter doesn't need special permissions - simply deploying from Xcode will gain you access to killall. (As the users of my previous JB camera tweaks may have already noticed this.)