4
我试图在茱莉亚发布内存,但没有成功。发布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
输出:
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
此代码只需要918M运行,但使用3207M。
问题: 为什么gc()不释放未使用的内存? 有一些方法可以强制垃圾收集器释放? 为什么垃圾收集器只在第二次迭代时释放一些内存?
你知道什么可以用来打印出OSX上的内存使用情况,因为代码'ps -p 29563 -o rss'不起作用 – zwlayer