Re: Can I abandon the lock on .SyncRoot and lock a collection directly? Less available memory in 2.0?

Tech-Archive recommends: Fix windows errors by optimizing your registry



Hi,

I finally fixed the problem. ".Net Memory Profiler" was a beeze to use
and helped to locate the problem quickly.

I was using a class derived from streamwriter. The streamwriter was
always constructed with a 2MB buffer. In Framework 1.1 the garbage
collector disposed those objects correctly. In Framework 2.0 I could
see those objects pile up forever.

I then modified the code and now the class does not derive from
streamwriter anymore. Instead I am simply using a textwriter as a
field of my class to write data.

Thanks again, Regards
DC

On 13 Apr., 18:56, "DC" <d...@xxxxxxxxx> wrote:
On 6 Apr., 14:47, "Frank Hileman"





<frank...@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
Hi DC,

Try running this program, but with a much smaller data set -- it adds a lot
of overhead.

ClrProfiler:http://www.microsoft.com/downloads/details.aspx?familyid=A362781C-387...

Log dumper for ClrProfiler logs:http://blogs.msdn.com/ricom/articles/449244.aspx

Regards,
Frank Hileman

check out VG.net:http://www.vgdotnet.com
Animated vector graphics system
Integrated Visual Studio graphics editor

"DC" <d...@xxxxxxxxx> wrote in message

news:1175854678.193242.150290@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Hi,

I am porting an app from Framework 1.1 to 2.0 and I am now using
Dictionary objects instead of Hashtables. There are some

lock (theHashtable.SyncRoot)

statements in the 1.1 code and I replaced those by

lock (theDictionary)

statements. I did not note a difference, but I wanted to ask if this
generates any issues like more granular locking.

I swapped out the Hashtable in the first place because I was hoping
that this would safe somememory. I am observing the following: under
1.1, my app is using p to 1300 MB ofmemoryand running fine. With
2.0, the app is now using about 1100 MB ofmemoryand then starts
throwing "out ofmemory" exceptions (2GB RAM Windows 2003 machines). I
have not found a way to solve this by cofiguration, and I am therefore
trying to save RAM now. Can someone recommend a really easy method to
profile which objects use what amount of RAM?

TIA for any hints,

Regards
DC- Zitierten Text ausblenden -

- Zitierten Text anzeigen -

I tried CLR Profiler. It does - of course - bog down the system
heavily and builds a 10GB or so trace file rather quickly. It then
takes quiet a while to create graphs from that and I am frankly not
expert enough to interpret what I get then. I get the accumulated size
of all strings and stuff like that.

What I need is a simple way to periodically dump out the total size of
some objects. E.g. I need to know how fast a certain instance of a
dictionary grows.

I am now trying .NetMemoryProfiler 3.0 but maybe someone knows a
simple way to get some object sizes; or has designed a routine that
iterates through a collection and sums up the sizes of all objects
contained therein.

Regards
DC- Zitierten Text ausblenden -

- Zitierten Text anzeigen -


.