M
Mark Steele
I'm working on a project where we collect data and store it in ArrayLists.
When the size of the ArrayList gets to 100K elements we prune it back down
to 50K.
I let my application run over the weekend and Windows Task Manager shows
that the application is using 500,000K memory for my application.
I figure that I'm doing something wrong so I download a trial copy of
Borlands OptimizeIt profiler and run the application again. Windows Task
Manager again shows that I have 500 Megs of application memory, but the
profiler will only account for a little over 12 Megs total!
Ok, so maybe something is wrong with Borlands profiler so I get Microsofts
CLR profiler and launch my application but tell it to not collect data just
yet. I'm hoping that this will give me a baseline for the overhead of the
CLR. Windows Task Manager shows 85 megs (ouch!) so I have my application
start collecting data - it quickly jumps to 100 megs and continues to grow.
The CLR show an allocation graph and reports a grand total of 2.3 megs (much
less than the 15 meg jump in memory that the Task Manager shows). I continue
to let the application run and when the task manager shows 500 megs the CLR
profiler shows the familiar 12.4 megs grand total that OptimizeIt reports (I
had to manually add up the OptimizeIt total 'cause I don't know how to get
it to report a grand total yet).
If I let this application continue it will eventually run out of virtual
memory and stop.
Both profilers show that the elements in the ArrayList account for about 1.8
megs (each item is 24 bytes) and that is the largest allocation in both
number of objects and total memory.
Where is all this extra memory going?
Is there a tool that will dive deeper into the CLR and let me know who or
what is sucking up nearly 400 megs of memory that the Task manager is
reporting but the profilers don't see?
Thanks for any help,
-Mark
When the size of the ArrayList gets to 100K elements we prune it back down
to 50K.
I let my application run over the weekend and Windows Task Manager shows
that the application is using 500,000K memory for my application.
I figure that I'm doing something wrong so I download a trial copy of
Borlands OptimizeIt profiler and run the application again. Windows Task
Manager again shows that I have 500 Megs of application memory, but the
profiler will only account for a little over 12 Megs total!
Ok, so maybe something is wrong with Borlands profiler so I get Microsofts
CLR profiler and launch my application but tell it to not collect data just
yet. I'm hoping that this will give me a baseline for the overhead of the
CLR. Windows Task Manager shows 85 megs (ouch!) so I have my application
start collecting data - it quickly jumps to 100 megs and continues to grow.
The CLR show an allocation graph and reports a grand total of 2.3 megs (much
less than the 15 meg jump in memory that the Task Manager shows). I continue
to let the application run and when the task manager shows 500 megs the CLR
profiler shows the familiar 12.4 megs grand total that OptimizeIt reports (I
had to manually add up the OptimizeIt total 'cause I don't know how to get
it to report a grand total yet).
If I let this application continue it will eventually run out of virtual
memory and stop.
Both profilers show that the elements in the ArrayList account for about 1.8
megs (each item is 24 bytes) and that is the largest allocation in both
number of objects and total memory.
Where is all this extra memory going?
Is there a tool that will dive deeper into the CLR and let me know who or
what is sucking up nearly 400 megs of memory that the Task manager is
reporting but the profilers don't see?
Thanks for any help,
-Mark