How I Solved Low Internal Memory Problems On My Nexus One
I have a rooted Nexus One running CyanogenMod 7. I like the Nexus One and although I could buy a new phone to replace this less-than-two-year-old phone, I wanted to see if I could fix the low internal memory problem. When you have low internal memory (less than 20 MB) your phone will not sync with Google to get your email, apps updates through the market, etc. Go low enough, and you can't install new apps at all. It is a real problem.
I tried several ways to solve this problem. I tried to install apps to the SD card, but not all app developers allow this. CyanogenMod 7 allows you to force apps to install to the SD card even if the developer says they should not. Another drawback to forcing apps to install on the SD card is the widgets will not function. I want the apps and their widgets! Of course, one way to fix the problem is to cut down on the number of apps I install. But this defeats the purpose of a smartphone. So here is how I solved the problem (note: you must have root (administrator) privileges):
1. I partitioned my SD card using Amon Ra Recovery. The phone will think that part of your SD card is its own internal memory. This partition is called the ext partition. You can also use Clockwork Mod Recovery, but I prefer Amon Ra Recovery because it allows you to choose the size of the ext partition. Clockword Mod makes you choose from a selection of sizes. I like a large ext partition because I install a lot of apps. I have approximately 240 apps on my phone. I made the ext partition 1.91 GB. Note: This will erase everything on your SD card so backup first. Benefit: The phone thinks the ext partition on your SD card is internal phone memory. Drawback: The space left on your SD card is less. This was not a problem for me because I use Google Music to stream my music to the phone. I use Google+ to upload all my photos and videos to the cloud immediately.
2. Here is the step that took me a while to figure out: You have to mount the ext partition. I wasted a weekend before I realized this. I used an app called Link2SD. This was simple once I realized it must be done.
3. Move your apps to the ext partition. You have to set CyanogenMod to install apps to internal memory. Settings>CyanogenMod Settings>Application>Install Location>Internal. This is counter intuitive, because, if you are like me, you have been trying hard to install apps to the SD card until now. With a partition the size of mine, I was able to put all my apps on the ext partition.
4. Use S2E to move apps to the ext partition. If you do not have too many apps, this will solve the problem. And it worked for me for a awhile. Did I say I like to install apps? Eventually, just the app data (which stays on the phone internal memory even if the app is moved to the SD card or ext partitition) took up too much space on my Nexus One internal memory and caused low memory errors. So I wondered if you can move the app data to the ext partition as well.
5. I went back to S2E, chose Settings>Advanced Mode. This allowed me to move the app data to the ext partition as well. This solved the low internal memory error again, but presented a new problem. With the app data on the SD card, the apps were very slow—almost unusable. Launcher Pro would not even work. I tried a faster laucher called Zeam, but that did not solve the problem. I considered buying a new faster SD card. But, I decided against spending $50 on this phone, when my next phone will likely not need the new SD card. I tried moving the app data back to the phone's internal memory and moving the Dalvik cache and download cache to the SD ext partition. But this did not save me enough space. The app data was what was taking up too much space. So I wondered is there a way to move only some of the app data to the ext partition? S2E does not offer this option. S2E moves all the app data or none of it.
6. Enter Titanium Backup. I had purchased the pro version of Titanium Backup and was using it to make backups and sync them to Dropbox. After messing around with the app I discovered that if you long press on an app listed in Titanium Backup it gives you a menu. The menu allows you to move the app data (for only this app) to the SD card. It is not clear from the Titanium Backup menu, but it means to the ext partition. Excellent benefit. But which apps to move? Let's start with the app that has the largest app data. But how to find that out?
7. I found an app called 1Tap Cleaner whose main goal is to clear your app cache to give you more space. But it also allows you to sort apps by their data size (not the app size). 1Tap Cleaner>Cache Cleaner>Settings>Sort By>Data size. The app with the largest data was TWiT.tv by Mediafly. I am not about to uninstall this app because I use it everyday to listen to TWiT pod-casts like All About Android while working out. It probably needs this data to remember where I am in each podcast. But, the app data for this app was 5 times as much as every other app. Moving it to the ext partition would free up 16 MB of precious internal phone memory. Google Music was the next largest app data at 3 MB.
8. Back in Titanium Backup I moved the app data for TWiT.tv by Mediafly to the ext partition. I opened TWiT.tv by Mediafly and noticed, as expected, it took the app longer to start up but, it did not affect playing the video podcasts. So this longer start up time was the only tradeoff. But remember, it is only for one app, not all apps like before. I could live with this because I usually start the app, then start working out while it loads. I am not sitting there waiting for it to load.
9. Success! My Nexus One runs snappy, syncs to Google well, and the only trade off is a little extra time loading up TWiT podcasts.