So the recommendation for clearing memory is calling GC after some function 
so that no references exist anymore?

Em quinta-feira, 7 de julho de 2016 17:17:03 UTC-3, Yichao Yu escreveu:
>
> On Thu, Jul 7, 2016 at 4:10 PM, Thuener Silva <thu...@gmail.com 
> <javascript:>> wrote: 
> > I have a code that uses a lot of memory and I'm trying to release some 
> of it 
> > but without success. I made up an examples to illustrate the problem: 
> > 
> > function memuse() 
> >   return string(round(Int,parse(Int,readall(`ps -p 29563 -o 
> > rss=`))/1024),"M") 
> > end 
> > 
> > function test() 
> >   for i = 1:2 
> >    println("\ni=$i") 
> >    a = rand(10000,10000) 
> >    println("Created a $(memuse())") 
> >    a = 0 
> >    gc() 
> >    println("Release a $(memuse())\n") 
> > 
> >    b = rand(10000,10000) 
> >    println("Created b $(memuse())") 
> >    b = 0 
> >    gc() 
> >    println("Release b $(memuse())\n") 
> > 
> >    c = rand(10000,10000) 
> >    println("Created c $(memuse())") 
> >    c =0 
> >    gc() 
> >    println("Release c $(memuse())\n") 
> >   end 
> > end 
> > 
> > test() 
> > 
> > 
> > Output: 
> > 
> > i=1 
> > Created a 918M 
> > Release a 918M 
> > 
> > Created b 1681M 
> > Release b 1681M 
> > 
> > Created c 2444M 
> > Release c 2444M 
> > 
> > 
> > i=2 
> > Created a 3207M 
> > Release a 2444M 
> > 
> > Created b 3207M 
> > Release b 2444M 
> > 
> > Created c 3207M 
> > Release c 2444M 
> > 
> > 
> > 
> > 
> > This code only needs 918M to run but uses 3207M. 
> > 
> > Questions: 
> > Why gc() is not releasing unused memory? 
> > There is some way to force garbage collector to release? 
> > Why garbage collector releases some memory only on the second iteration? 
>
> There's no guarantee that the a/b/c = 0 clears the reference. 
>
> > 
> > 
> > Thanks, 
> > Thuener 
> > 
>

Reply via email to