Dynamic Memory Heap And Why It’s Important
Published November 26th, 2005 in editorial, howto, palm, quicktips(Last edited Feb 29, 2008)
![]()
If you are a major gamer who loves to play emulator type games, or Astraware games like Bejeweled 2 or other graphics intensive games you probably already know about dynamic heap memory and that many Palm devices do not have enough dynamic heap memory required to run most of those type of games.
Most people who don’t run graphics intensive games or programs will probably not need to worry about how much dynamic memory heap their Palm device has. Obviously, if they have not experienced any ‘insufficient memory‘ error messages, they don’t need to worry since what they have is sufficient enough for their needs. For others, this may be a major problem.
Although internal RAM memory and external flash memory cards can alleviate a lot of memory related limitations, there’s something that can limit what programs your specific Palm device can load and run or not. It’s called dynamic (not storage) heap memory. Having more expansion card storage memory, or freeing up RAM (somewhat) won’t change this dynamic heap memory limit. It’s been set and allocated by Palm and the Palm OS to a specific size for each Palm device. To the regular Palm user, you can’t see it or access it. It can be termed as “memory available for programs to use when they run or launch“. Internal RAM inside the Palm consists of both the dynamic heap memory and the storage heap memory. Unfortunately, storage heap memory can not be converted (well, it wasn’t possible before) to heap memory although it seems like some Palm programmers have figured out a way to work around this dynamic heap limitation.
Games usually require a lot of large, single blocks of dynamic heap memory to load graphics. And, sometimes, over time, the dynamic heap memory gets broken up or fragmented into smaller individual chunks. The total heap memory amount has not been changed, what’s changed is that they are no longer in the large, single blocks that the programs require but rather in smaller chunks. That’s usually when you get ‘insufficient memory‘ error messages.
Usually, you can defragment the memory blocks by doing a soft reset, at which time the Palm will try to gather them all up and put them back into bigger chunks. Or, disable all hacks that you have running in the background and any launcher programs. This may free up some of the dynamic heap memory. But, some programs won’t even load or run because it requires much more dynamic heap memory than the Palm device has. The only solution at one point is to buy a newer Palm device that has a larger dynamic heap memory allocated for it. Nowadays, there’s a few programs that seems to find some workarounds to that problem. Before I discuss them, here’s a listing of some Palm devices and the amount of dynamic heap memory they have:
| Device | Dynamic Memory |
| Zire 71 | 1MB |
| Zire 72 | 2MB |
| Tungsten T | 800kb |
| Tungsten E | 2MB |
| Tungsten T3 | 4MB |
| Tungsten C | 4MB |
| Tungsten W | 1MB |
| Treo 600 | 4MB |
| Treo 650 | 5MB |
| Zire 31 | 1MB |
| Tungsten E2 | 2MB |
| Zire 21 | 512k |
| LifeDrive | 6MB |
| TX | 6MB |
I have been unable to obtain info on the newer Palm devices, which seems to have much larger dynamic heap memory and dynamic heap memory issue is no longer much of an issue.
![]()
And check out this link for info on dynamic heap memory of older Palm devices
The data was taken from this link and other various sources on the internet. I can’t verify the accuracy of the data since many places have different data but I think what I’ve listed seems close enough to what I think is correct.
Here’s another link on dynamic heap memory from Astraware: what the heck is heap memory?
Because I love freewares and often look for a freeware if it’s available, I will mention a freeware program first.
Fargo Heap Resizer
Fargo Heap Resizer (freeware) is an application that claims to extend the dynamic heap memory up to a maximum of 1.96MB and can be enabled automatically on soft reset. This application currently supports only the Tungsten T, T2 and Zire 71 but has stated that if there is enough requests for other devices, he may attempt to support others.
For those with a Tungsten T, T2 and Zire 71, you may want to try this freeware .
It seems to have a very different approach from UDMH in that this program takes memory from the storage area and puts it around the original dynamic heap. Then, it gets the Palm to resize the dynamic heap memory to accomodate for all the “new” dynamic heap memory. Thus, seemingly, there’s more dynamic heap memory available.
I have not personally tried it since I don’t play emulator games and the programs I use don’t require any extra dynamic heap memory, but judging from responses in the Palm forums, it looks like this freeware works fine.
UDMH (Unlimited Dynamic Memory Hack

UDMH is probably the most popular program that allows many Palm devices, even those like Tungsten T and Zire 71 with low dynamic heap memory to run graphics intensive programs. Apparently, UDMH seems to allocate all your physical RAM to a dynamic heap so you’d need to free up as much physical RAM as possible to “trick” your Palm in thinking that it has more dynamic heap memory than it does.
I’m not a programmer so I can’t explain all this very well. I’d suggest contacting the developer of the programs for a better explanation or do some research on your own if you wish to better understand dynamic memory heap.
As far as I can tell from various Palm forums, these two programs work well to solve the dynamic heap memory limitation problems of many Palm devices.
Also, in a related note, the same developer of this app has recently come up with UnCache which allow you to specify which applications don’t get loaded into cache after a reset. This can greatly help in the stability of the newer NVFS (Non-Volatile File System) devices like the TX, Tungsten E2, Treo 600, 650, LifeDrive. And apparently, they work well together. And, it may also help to install Resco Locker (freeware) which locks applications in memory which preventing potential problems. More info on these applications can be found in my posting on Reset loops and crashes here.
![]()
Running programs and file from external flash memory SD card
On a somewhat related topic, you may be able to to try to run the applications from the external flash memory SD cards using PowerRun or move the database files over to the flash memory SD card using MSMount5 and only run the main program in RAM. These aren’t anything similar to Fargo Heap resizer or UDMH because they allow you to temporarily load the program in RAM and remove it when you exit. So, you will still need to have adequate RAM or dynamic heap memory blocks to run, but the advantage is that you don’t hog up the RAM.
PowerRun is a great little utility that can allow you to store a program with the database and other files on the external flash memory SD card and run them directly off the card. There may be a slight lag as it can be a bit slower to load from a flash memory card rather than being constantly stored in RAM. What happens is that PowerRun will create a shortcut in RAM that, when triggered, will find the program and the necessary files on the SD card and load them in RAM and run them. Everything will act as if it was launched from RAM. When you exit out of the application, everything that was loaded in RAM temporarily will be deleted (the shortcut will track everything that was loaded and thus will delete everything). This will free up RAM and you only use up RAM when you need to, which is when you are launching the program. There are launchers like ZLauncher, MegaLauncher (Shark), LauncherX, etc that can do the same thing but also offer launcher features and capabilities.
MSMount5 or MSMount (for older Palm OS) both freewares, work in a slightly different way. It allows you to store the database .pdb, which are quite often quite large for many programs like Mapopolis, Bejeweled2, etc. You will need to still keep the main .prc in RAM. So, rather than loading both the main program and database files in RAM to run it (and possibly run out of memory or get an error message), you only need to load the main program in RAM. I have found that I can do this with Bejeweled2, loading all the pdb files in the MSMount directory in the SD card and running the main program in RAM. If you find that using PowerRun doesn’t work for some programs, you may want to try MSMount and see if it works.
In order for MSMount5 to work, you first have to create a directory on the SD card named MSMount5 at the /Palm/Programs/ directory, so that you end up with /Palm/Programs/MSMount/. In order to do so, you will need a file manager program which I’ve discussed in this file manager posting.
Here’s a page that shows how to use MSMount on the older m500 or m505 devices. But most of the instructions are similar to the newer MSMount version as well.
I have found that Bejeweled2 works fine using MSMount5 on my Zire 71.
If you own a TX and find that you are having memory errors or problems, you may want to try Dmitry Grinberg’s MemUnfragment. It says it’s for the TX so install at your own risk if you don’t own a TX and want to try it.
Backup your Palm before installing any new program just in case
Again, to re-iterate what I keep saying over again. You should always have a backup program installed and back up everything before you install anything new. I’m not sure whether something drastic happens if you install either of these programs but it’s always a good idea to have some kind of back up just in case. That way, if you need to do a hard reset and wipe everything out, you can easily restore most of the programs back. Check out this posting for backup program suggestions including freeware.
Thanks for visiting and supporting Palm Discovery. If you are not reading this article from Palmdiscovery.com or palmdiscovery.net, the website you are reading it from is guilty of copying and posting my content without consent. Please visit Palm Discovery for the original source of the material.
![]()
: archives categories fargoheapresizer udmh dynamicmemory heapmemory heap, memory palm powerrun msmount msmount5 memunfragment zlauncher megalauncher(shark) launcherx
You may also be interested in these posts:
PLEASE DO NOT post your technical and help related questions in the comments or ask me via email. Check the numerous forums in the LINKS page and post them there. Thanks!

I am so honored to be awarded Palm Addict's Reader Award of Excellence for 2009! Thanks, Sammy!
If you're wondering why a Palm device is a much better life organizer than a paper one, read Why Get a Palm?? Also, check out the growing archive of articles in the Archive Listing that you may find helpful.
Want to be our next Palm Explorer ? Simply send me a few lines with your name (or forum name), the PDA device you own and whatever else you wish to share with the rest of the readers. This is a great way to promote your own blog and/or website. I personally love reading these profiles because it's always nice to communicate and "discover" someone new. Either reply to this Brighthand forum thread or send it via the contact form. All submissions are eligible for an entry in periodic giveaway contests I may hold from time to time.
Product reviews
If you're a software program developer or vendor and wish to have your program or product reviewed, please contact me. Reviews will be done on a first come, first served basis.
Or search my blog using the Technorati search box on the right or via my Del.icio.us tags and bookmarks.
CONTACT ME






















































(copied from Blogger)
Other sources like from PDArcade and somewhere on PIC, BH, or 1src will say T|T3 has 10MB while T|C has 12MB of dyn heap mem.
Even so, there seems to be inconsistencies with the link concerning storage data. Some models like the z71 and T|E are reported as total RAM (former has 13.8MB of user RAM while the latter has 28.5MB), while others like the and T|T3 T|C are reported by user RAM (their total RAM is 64MB IIRC)
ackmondual
# posted by Anonymous : 12/07/2005 12:23:32 PM
Yes, as I’ve indicated, the data seems to be somewhat inconsistent. At least we know that the T, T2 and Zire 71 has very little dynamic memory heap. Total RAM is what’s in the specs and as we already know, the Zire 71 although has 16MB total RAM, only has 13.8MB that the user can install while the remaining is locked.
I think that the dynamic heap can’t be that much on any device. I would go for maybe 4 - 6 but these seem too good to be true, although I don’t really know.
# posted by maceyr : 12/07/2005 06:46:40 PM