-- Leo's gemini proxy

-- Connecting to republic.circumlunar.space:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Debugging memory use and fragmentation on Windows using Address Space Monitor


At work at the moment we are putting a lot of effort into making our program not crash. Sensible, eh?


It's crashing because a) it uses an enormous amount of memory and b) it tends to fragment your remaining memory. One of the characteristics of this program is that from time to time it needs a large contiguous chunk of memory so that it can pass a big bit of XML to someone else. This tends to be a problem when your memory is fragmented.


For example today I was running it, and it was using 1GB of memory (+about 0.3GB reserved), leaving 0.7GB free in the 2GB address space. However, the largest available contiguous block of memory was about 60MB.


The long-term answer is obviously to use less memory, but in the shorter term we have had quite a bit of success by writing code that works around the fragmentation. For example, we have a custom mutable string-like class that can store its chars in several separate blocks of memory instead of all in one contiguous block.


Debugging this kind of thing is always a very difficult process. For me it has transformed from an almost-impossible task into a tractible one because of Charles Bailey 's Address Space Monitor tool. This gives you a clear picture of your process' address space, and version 0.6a adds recording functionality that makes reports to impress managers a lot easier to produce.


Charles Bailey

Address Space Monitor

version 0.6a


Without it, we wouldn't know where to start.


Originally posted at 2008-04-18 09:29:11+00:00. Automatically generated from the original post : apologies for the errors introduced.


original post

-- Response ended

-- Page fetched on Sun May 19 07:58:23 2024