ipython / ipython

Official repository for IPython itself. Other repos in the IPython organization contain things like the website, documentation builds, etc.

Home Page:https://ipython.readthedocs.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

one-line execute occur memory leak

TeusEE opened this issue · comments

jupyterlab/jupyterlab#16139
while i use spyder/Jupyterlab, i found some unintended(i presume) memory leak.

above issue, i try to make list/array inside of python function and return it

but if i try to use the function with one line execution, there happen incresing memory and never decrease

first i think it is problem of spyder/JupyterLab, but same issue occur in IPython Shell in command prompt

i attach code below.

please review

import numpy as np
import gc
cnt = 100000000

def np_gen():
    _ret = np.ones(cnt, dtype = np.int32)    
    try:
        return _ret
    finally:
        while gc.collect():
            print("collect gcing...") 

execute sequence.
image

Mem usage of windows task mgr.
image

case study.
if i use %reset, all variable remove.

%reset out => remove output, but memory never recovered

%xdel => can't remove because output data has no variable name

Interesting.

If someone want to investigate, you might want to use https://objgraph.readthedocs.io/en/stable/ and a weakref to the created object to see what is holing to it.