I see you haven't really understood my point yet: the large-object-heap does not get compacted, i.e. when there are empty holes in the one huge memory block it manages, then the occupied blocks are NOT shifted to create one big empty hole; moving large blocks was considered too expensive. The net result is, you could have 2GB of memory filled with a pattern like this:
80KB in use
90MB free
80KB in use
90MB free
80KB in use
...
80KB in use
90MB free
80KB in use
90MB free
which means less than one percent is in use, and still you can't allocate a single 100MB block. That is what fragmentation is about; and that is why "memory usage" numbers don't tell you whether the situation exists or not. :)
Luc Pattyn [Forum Guidelines] [My Articles]
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Show formatted code inside PRE tags, and give clear symptoms when describing a problem.