IPythonのresetみたいなヤツが理想。
StackOverFlow先生によると、workspace() で消せるらしい。
Julia: How to clear console
http://stackoverflow.com/questions/26548687/julia-how-to-clear-console
0.3のリリースノートには下記のように書いてある。
The workspace() function was added, to clear the environment without restarting.
http://julialang.org/blog/2014/08/julia-0.3-release/
試しに使ってみる。
julia> x = 0 0 julia> x 0 julia> workspace() julia> x ERROR: x not defined
確かに消えてる。
workspaceの処理自体は下記に書いてある。
interactiveutil.jl
https://github.com/JuliaLang/julia/blob/master/base/interactiveutil.jl
けど、読んでもよくわからなかった。eval ... expr ... えーと。とりあえずパッケージをクリアしているのはわかる。
これを実行するとメモリは解放されるのだろうか。適当に100MBくらいのファイルをDataFramesで読み込ませてtopでメモリ使用量を見てみる。
import DataFrames df = DataFrames.readtable( "100mb_file.tsv", separator='\t' ) workspace()
実行前 : 73MB DataFrames import後 : 162MB readtable実行後 : 426MB workspace実行後 : 434MB
変わらんね
gc()実行後 : 359MB
減ったけどまだ残ってる。
じゃ、これでどうだ。
import DataFrames df = DataFrames.readtable( "100mb_file.tsv", separator='\t' ) df = None gc() workspace()
上記コード実行後 : 179MB
さすがにこれだと消えているようだ。
新しいworkspaceでまた同じファイルを読み込んで、再度次のworkspace立ち上げるのを繰り返したらメモリ使用量はどんどん加算されていった。
回避方法とかあるのだろうか。まあ、とりあえず当面はexitして立ち上げ直そう。