-
Notifications
You must be signed in to change notification settings - Fork 373
Open
Labels
Description
Description
Creating a large panel, and then "overwriting" it in a loop causes the process to just eat up more and more memory.
MWE
Note that this will example will use significant memory on your computer
using DataFrames
function inner_df(Nrow,Ncol)
df = DataFrame(rand(Nrow,Ncol),:auto)
end
function outer_df(N)
Nrow=76
Ncol=21
df=DataFrame(rand(0,Ncol),:auto)
for i = 1:N
append!(df,inner_df(Nrow,Ncol))
end
return df
end
function iterate(Niter)
for i =1:Niter
println(i)
@time pan = outer_df(1000*10*10)
end
end
iterate(10)Expected Behavior
I don't know anything about the internal workins of this, but I assumed that in the second iteration of iterate that memory usage would not increase. On my system, virtual, residential, and %RAM all increase (outputs from top) on every iteration. Moreover, the memory is not cleared fully after the function terminates. Running it one more increases memory usage even more. Running garbage collection GC.gc() doesn't work either.
Versions:
[a93c6f00] DataFrames v1.2.2
Julia Version 1.5.3
Commit 788b2c77c1 (2020-11-09 13:37 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-9.0.1 (ORCJIT, skylake-avx512)
Environment:
JULIA_DEPOT_PATH = /sftwr/user-pkg/m1eeb00/julia
JULIA_PKG_SERVER = pkg.julialang.org
JULIA_EDITOR = code
JULIA_NUM_THREADS = 6
JULIA_BINDIR = /apps/julia/current/bin/frb