views:

902

answers:

3

I've been trying to optimize the Windows program I am developing, trying to find the best data structures that will minimize memory use. It loads large blocks of data, so with huge files, it can use a large amount of RAM.

For memory measurement, I have been using GlobalMemoryStatusEx. See: http://msdn.microsoft.com/en-us/library/aa366589(VS.85).aspx

I believe this works for most flavors of Windows, from Windows 2000 right up to and including Windows Vista.

Is this the preferred way to measure memory use from within a program, or is there another, better way?


Addenum: Found the Stackoverflow question: How to get memory usage under Windows in C++ which references GetProcessMemoryInfo

I'll try that one out.

+1  A: 

If you are trying to optimize your own program memory-wise, I suggest you use a memory profiler tool for that. There are many out there...some are free, some are not..you will surely find the one you need. Those tools are written specifically for what you need (and also for memory leaks search) so...it will be hard to compare with them and do something like that on your own from your own program :)

badbadboy
A: 

I use valgrind to track memory usage, as well as to profile code and detect memory leaks. The massif tool, I believe, tracks memory usage on the stack and heap.

strager
Looks like a nice tool. Unfortunately I'm on Windows, and Valgrind appears to be for Unix.
lkessler
+1  A: 

See the addenum in my question.

lkessler