Extreme memory usage when `synchronized( this )` is used
Daniel Kozak via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon May 11 03:30:10 PDT 2015
On Monday, 11 May 2015 at 10:24:57 UTC, Daniel Kozák wrote:
>
> On Mon, 11 May 2015 09:40:28 +0000
> tcak via Digitalmars-d-learn
> <digitalmars-d-learn at puremagic.com> wrote:
>
>> On Monday, 11 May 2015 at 09:20:50 UTC, Daniel Kozák wrote:
>> >
>> > On Mon, 11 May 2015 09:09:07 +0000
>> > tcak via Digitalmars-d-learn
>> > <digitalmars-d-learn at puremagic.com> wrote:
>> >
>> >
>> > I think synchronize(this) prevents GC from collect memory
>>
>> I am not sure whether this is expected behaviour from
>> `synchronization` keyword.
>>
>> Similar code in Java. It has settled on about 62M and didn't
>> increase at all.
>>
>> [code]
>> public class Main{
>> private void other(){}
>>
>> public void close(){
>> synchronized( this ){
>> other();
>> }
>> }
>>
>> public void hasData(){ System.out.println("Has Data"); }
>>
>> public static void main( String[] args ){
>> for(long i=0; i < 250000000; ++i){
>> Main conn = new Main();
>>
>> conn.hasData();
>>
>> conn.close();
>>
>> conn = null;
>> }
>> }
>> }
>> [/code]
>
> But yes I would say, it is not intentional behaviour. It should
> use
> weak reference, so It would be possible for GC to collect it.
> Please
> fill issue
And on 2.066.1 it works correctly, so it is a regression
More information about the Digitalmars-d-learn
mailing list