Update: You may want to check out this blog entry at the Windows Mobile Team Blog that describes how WM5 handles low memory problems. My impression is that it does a pretty good job, but that poorly-written apps can still bring the system down.
As you may have read earlier, I'm a convert from the PalmOS to Windows Mobile. The transition has had its ups and downs. There are days when I'm utterly impressed with how modern and advanced the operating system seems. Then there are the other days: the days I have to soft reset the phone just to get it to respond in the way I expect it to.
That second kind of day, the soft-reset kind of day - that's every day. Sometimes twice a day.
Before I get into the memory issues I want to talk about in this article, allow me a digression. Whenever anybody asks me how much I know about computers or smartphones my default answer is that I'm a "power user." What I mean by that is I'm not afraid to install a bunch of programs, dig into the preferences, and generally tweak out my gadgets to the nth degree. For example, my killer app on my mac is Quicksilver, an insanely customizable command-bar tool. If I could hit option-space on my Treo and start typing - well that would be an ideal launcher. That's what I mean by "power user," though: I don't have the first clue about how to go about programming such an app, but if someone else did it I would use it in a heartbeat.
I say the above to provide a bit of context: I'm not especially intimidated by the prospect of having to manage the program memory on my 700w. There's a part of me, in fact, that is actually attracted by it - sometimes tinkering with tools can be an end in itself. Knowing myself and my habits with gadgets, I decided to be methodical about how I went about using the program memory in the 700w.
Step One: Education
If you're already familiar with how RAM works on the 700w, skip to the next page. Everybody else, here's what I discovered.
The first step was to learn a bit about how the RAM works on the Treo 700w. What I discovered is that although Palm's specs on the 700w say "memory 128MB (60MB user accessible) non-volatile," that's not the whole story. If I had 60mb to use for both storage and running programs I'd be in heaven.
Instead, unlike most previous PocketPCs, the 700w splits out its available RAM into two separate and un-changeable sections: "storage memory" and "program memory". You can find this information in the "Memory" section of your settings. Storage memory is, in fact, set at around 60mb - and let me tell you after 10 years of using PalmOS devices it feels like a huge amount of space. Program memory, on the other hand, is a different story. The program memory is what the 700w uses to run all of its applications and it's set at 32mb - though in my experience it's always closer to 25.45mb. Actually, in my experience, I rarely see my available program memory above 10mb. What's the deal?
In Windows Mobile, hitting the "ok" button closes a window but doesn't actually quit the application - it keeps running in the background. Every time you open an application it starts to take up program memory. Every time you hit "ok" it simply closes the "window;" the application itself keeps running. Eventually the program memory will fill up and one of two things will happen: Windows Mobile will automatically close a background application in order to keep the phone running smoothly or Windows Mobile will slow down to an unbearable crawl, stopping you from doing anything. (I sometimes tell people I've gotten the "Blue Screen of Death" on the 700w, but that's a lie - it just seems to go so slowly that I have to reset it to keep my sanity).
Now, on a default 700w, you can hold down the "Ok" button to bring up the "Running Programs" section of the memory settings (aka the "Task Manager"). If you've ever hit crtl-alt-del to force-quit programs on a Windows machine this will feel fairly familiar. The "Running Programs" tab shows you some of what's currently taking up your program memory - but not all. Just like on any other computer there are all sorts of little software services and applications (aka: the Operating System) that are constantly working in the background (more on that in a bit).
The nice thing about the Task Manager is you can tap the "stop all" button to just close everything and free up your program memory. It won't stop those background services, but 99% of those are necessary for the phone just to function.
So I got myself educated. The next step was to see if I could improve on this system. After all, I'm a power user.
Next Page: Two memory management applications >>