Hi Matteo,<div><br></div><div>I suppose you release memory on finalizers. Sgen has a longer cycle</div><div>to finalize objects than boehm. On why extra retention is happening on</div><div>linux is strange and could be a bug. Can you provide a test case that</div>
<div>shows this behavior?</div><div><br><br><div class="gmail_quote">On Fri, Feb 11, 2011 at 6:08 PM, matteo tesser <span dir="ltr">&lt;<a href="mailto:matteo.tesser@gmail.com">matteo.tesser@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Rodrigo,<br>
OK, taking or not taking into consideration memory pressure is a<br>
runtime&#39;s implementation choice: if you consider memory pressure, the<br>
runtime will be more reactive to memory usage, in the latter case no,<br>
but unreferenced objects should be freed sooner or later.<br>
<br>
I did an additional test: I counted the live object instances of the<br>
object type which references the unmanaged resources over time: while<br>
in windows and os x the live instances oscillate  between 10K and 60K,<br>
 in  linux the live instances arrived to 20 milions. it seems that the<br>
GC does not realize that so many objects  have been allocated. Are 20<br>
milions objects  still a number that should not trigger the GC ?<br>
<br>
Probably the problem is not related to unmanaged memory but the<br>
particular structure of my problem highlights a defect.<br>
<font color="#888888"><br>
Matteo<br>
</font><div><div></div><div class="h5"><br>
<br>
<br>
On Fri, Feb 11, 2011 at 3:34 PM, Rodrigo Kumpera &lt;<a href="mailto:kumpera@gmail.com">kumpera@gmail.com</a>&gt; wrote:<br>
&gt; Mono doesn&#39;t take memory pressure into account. This is probably<br>
&gt; what&#39;s happening.<br>
&gt; On Fri, Feb 11, 2011 at 3:54 PM, matteo tesser &lt;<a href="mailto:matteo.tesser@gmail.com">matteo.tesser@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; Hello,<br>
&gt;&gt;<br>
&gt;&gt; I have a concurrent programming test  which during 5-10 minutes<br>
&gt;&gt; creates and releases a  lot of objects which use unmanaged memory.<br>
&gt;&gt; Every managed object,  respectively  allocates/deallocates the<br>
&gt;&gt; unmanaged memory using  Marshal.AllocHGlobal and Marshall.FreeHGlobal<br>
&gt;&gt; methods  and uses GC.AddMemoryPressure/GC.RemoveMemoryPressure to tell<br>
&gt;&gt; to  the garbage collector the presence of the additional memory.<br>
&gt;&gt;<br>
&gt;&gt; I experienced some memory problems on linux,  so I did several tests:<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 1)  In linux machine with openSuse 11.3 64bit dual core with  mono<br>
&gt;&gt; 2.8.2,  the program launched with mono --gc=sgen eats 4GB of RAM in<br>
&gt;&gt; about two minutes (see attached screenshot).<br>
&gt;&gt; If I launch the test by specifying the use of  boehm gc,  the memory<br>
&gt;&gt; is still consumed but at smaller rate.<br>
&gt;&gt; I tried the test also with mono 2.10p3 and the behavior is the same<br>
&gt;&gt; (also using MONO_GC_PARAMS=stack-mark=precise)<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; 2) In Windows/.NET the memory footprint  of the program is constant on<br>
&gt;&gt; time:  80MB,<br>
&gt;&gt; 3) in a dual core mac os x ( with mono 2.10p2) the behavior is the<br>
&gt;&gt; same as windows.<br>
&gt;&gt;<br>
&gt;&gt; 4) In a Virtual Machine with  linux openSuse 11.3 32bit  and 1<br>
&gt;&gt; processor  , mono 2.10p3 the test works fine: the memory footprint  is<br>
&gt;&gt; constant at 50MB<br>
&gt;&gt;<br>
&gt;&gt; My conclusion is that the problem is restricted to the linux /<br>
&gt;&gt; multi-thread case.<br>
&gt;&gt; Are you aware of such issues on sgen?<br>
&gt;&gt;<br>
&gt;&gt; I tried to build-up a simple code reproducing the problem but I did<br>
&gt;&gt; not managed to do it with a simple test case, in case are you<br>
&gt;&gt; interested in a binary test case?<br>
&gt;&gt;<br>
&gt;&gt; Thanks,<br>
&gt;&gt; Matteo<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Mono-devel-list mailing list<br>
&gt;&gt; <a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
&gt;&gt; <a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
&gt;&gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>