G
Guest
Guest
Archived from groups: microsoft.public.windowsxp.perform_maintain (More info?)
I'm working with a test program that exercises several components of our
product. It is built with Visual C++ .NET (unmanaged C++). Many threads, many
DLLs, far too many objects on the heap.
Under Windows 2000 Pro WS SP4, the program grinds away for a half-hour or so
at 99% CPU. Over time, the "private bytes" count for the process slowly grows
to around 1GB and levels out. It eventually produces a few hundred output
files that have the expected output.
Under Windows XP Pro SP2, the same program on the same hardware with the
same test case grows its "private bytes" count to 2GB. Many threads fail with
errors indicating that malloc or new was unable to allocate space on the heap
- not surprising, since we have only 2GB of virtual address space.
What could account for the extra memory usage seen when the program runs on
XP?
I understand that XP can use a "low-fragmentation heap" algorithm, but I've
verified that it is not enabled for the default heap we're using. XP also
adds an extra byte to each allocation request as part of a security
improvement - that is not sufficient to account for the huge difference.
Do you know of other significant differences in the heap managers for these
platforms?
I'm working with a test program that exercises several components of our
product. It is built with Visual C++ .NET (unmanaged C++). Many threads, many
DLLs, far too many objects on the heap.
Under Windows 2000 Pro WS SP4, the program grinds away for a half-hour or so
at 99% CPU. Over time, the "private bytes" count for the process slowly grows
to around 1GB and levels out. It eventually produces a few hundred output
files that have the expected output.
Under Windows XP Pro SP2, the same program on the same hardware with the
same test case grows its "private bytes" count to 2GB. Many threads fail with
errors indicating that malloc or new was unable to allocate space on the heap
- not surprising, since we have only 2GB of virtual address space.
What could account for the extra memory usage seen when the program runs on
XP?
I understand that XP can use a "low-fragmentation heap" algorithm, but I've
verified that it is not enabled for the default heap we're using. XP also
adds an extra byte to each allocation request as part of a security
improvement - that is not sufficient to account for the huge difference.
Do you know of other significant differences in the heap managers for these
platforms?