reducing memory usage in Android
I'd like to share tips and get help on how to reduce memory usage in Android. Maybe we can start a wiki page somewhere for this.
I've found that getting more free memory on my Android phone (G1) makes the phone much faster, especially when switching between apps.
I'd tried CompCache, but found it made little difference. I tried a swap partition, but found it made my phone unstable.
So here's my process for identifying memory hogs under CyanogenMod: connect the phone via USB, run 'adb shell', and then 'top -m 15 -s rss -d 10'. I then use the phone for a while, switching between some large apps like the browser and Google Maps, and observe which processes are staying in memory. Note that the USB debugger itself uses some memory.
I was able to get rid of some apps that were staying in memory for no apparent reason: Callbook.
I was able to get rid of some apps that were staying in memory and I didn't really need: 3G Watchdog, NetCounter
I was able to change settings in some apps so that they wouldn't stay in memory all the time: disable notifications in CyanogenMod Updater; disable 'start service on power on' in Quick Calendar
I was able to find some alternative apps that don't stay in memory all the time: now using Mode Scheduler and Timeriffic instead of Sound Manager
I'm still experimenting with different calendar widgets to see which one uses the least memory.
I noticed that the Calendar app was staying in memory. I'm not sure, but I think that disabling gmail/contacts/calendar sync fixed that. Disabling sync makes the phone faster anyway, though I then want some alternative mechanism to make sure that the phone syncs at least once a day. I've been using WiSyncPlus, set to turn on WiFi on charging, and force sync on WiFi connection. That works, though WiSyncPlus uses 15 MB or so itself. If Timeriffic or some other timer-based program that doesn't stay in memory had the ability to do a force sync, I'd prefer that.
After all that, things were greatly improved: I could keep a couple of large apps like eBuddy and the Browser in memory at the same time.
Since then I've wiped my phone and upgraded from CyanogenMod 4.2.13 to 4.2.15.1, and replicated my apps and settings as best I could remember.
I still have some large apps that seem to stay in memory:
* system_server
* android.process.acore
* com.android.phone
* com.android.inputmethod.latin
* zygote
* com.google.process.gapps
I don't recall if all of these apps were staying in memory under 4.2.13. No doubt at least some of these are necessary. (acore)
Are there any settings I can change or apps I can uninstall to stop these processes from staying in memory all the time? I don't use my phone as a phone very much; I'd be happy to get the phone app out of memory. What does gapps do? I don't need my gmail, contacts, and calendar to sync constantly. I've tried disabled the wireless network location service, but that doesn't seem to have made any difference.
Under which process does the memory usage for a widget go? I'm not seeing a separate process for some of my widgets.