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 > > >