Memory not freed up when deleting dictionary values

68 views
Skip to first unread message

Andrew B. Martin

unread,
Jul 28, 2015, 10:52:39 AM7/28/15
to julia-users
I asked this question on Julia-Opt, and Joey Huchette suggested I move it here.


The thrust of the question is that I'm deleting and garbage collecting dictionary values, but the memory associated with those values is not freed up after garbage collection. Joey pointed out that the dictionary could still be keeping a reference to the deleted object.

My example:
# System memory 500/15039MB

julia
> d = buidModel();
"success"

# System memory at 8883/15039MB

# delete the model object - corresponds to about a 1 Gb LP file
# I observe the same effect if I enter
# julia> d["m"] = 0;

julia> delete!(d, m”);

# System memory unchanged

julia> gc()

# System memory unchanged

# delete a list of affine expressions used to make constraints in the model - estimated 1GB - 2GB RAM
julia> d[“aff_exprs”] = 0

# System memory unchanged

julia> gc()

# System memory unchanged

julia> d = 0

# System memory unchanged

julia> gc()

# System memory 8255/15039MB

Why is memory not getting freed up when I delete or reassign dictionary values?

I can see how that by removing dictionary values with delete! references to deleted values might linger, but when I reassign and garbage collect it seems to me that they should be removed for good.

I'm using Ubuntu 14.04.1 LTS with Julia 0.3.8. I also observe this behaviour on Windows 7 with Julia 0.3.10.


Reply all
Reply to author
Forward
0 new messages