Ich versuche, Speicher in Julia freizugeben, aber ohne Erfolg.Freigabe Speicher in Julia
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
Ausgang:
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
Dieser Code muss nur 918M laufen, sondern nutzt 3207M.
Fragen: Warum gc() nicht ungenutzten Speicher freigibt? Es gibt eine Möglichkeit, den Garbage Collector zum Freigeben zu zwingen? Warum Garbage Collector nur bei der zweiten Iteration etwas Speicher freigibt?
wissen Sie, was verwendet werden kann, um Speicherverbrauch auf OSX auszudrucken, da der Code 'ps -p 29563 -o rss' nicht funktioniert – zwlayer