You're not doing this from ipython are you? It's cache hangs onto the plot object references and stops python's garbage collector from releasing them. If so, you can disable the cache as a workaround. A better option would be if ipython implemented an option to avoid caching references to matplotlib objects.
Gary R. On Fri, Jan 14, 2011 at 2:59 AM, Benjamin Root <ben.r...@ou.edu> wrote: > On Thu, Jan 13, 2011 at 7:54 AM, CASOLI Jules <jules.cas...@cea.fr> wrote: >> >> Hello to all, >> >> This is yet another question about matplotlib not freeing memory, when >> closing a figure (using close()). >> Here is what I'm doing (tried with several backends, on MacOSX and Linux, >> with similar results): >> -------------------- >> import matplotlib as mpl >> from matplotlib import pylot as plt >> import numpy as np >> >> a = np.arange(1000000) >> mpl.cbook.report_memory() >> # -> output: 54256 >> plt.plot(a) >> mpl.cbook.report_memory() >> # -> output: 139968 >> plt.close() >> mpl.cbook.report_memory() >> # -> output: 138748 >> -------------------- >> >> Shouldn't plt.close() close the figure _and_ free the memory used by it? >> What am I doing wrong ? >> I tried several other ways to free the memory, such as f = figure(); ... ; >> del f, without luck. >> >> Any help appreciated ! >> >> P.S. : side question : how come the call to plot take so much memory (90MB >> for a 8MB array ?). I have read somewhere that each point is coded on three >> RGB floats, but it only means an approx. 12MB plot... (plus small overhead) >> >> Jules >> >> > > Jules, > > Which version of Matplotlib are you using and which backend? On my Linux > install of matplotlib (development branch) using GTKAgg, the memory usage > does get high during the call to show(), but returns to (near) normal > amounts after I close. An interesting observation is that if the > interactive mode is off, the memory usage returns back to just a few > kilobytes above where it was before, but if interactive mode was turned on, > the memory usage returned to being a few hundred kilobytes above where it > started. > > Ben Root > > P.S. - As a side note, estimating the memory size of these plots from the > given data isn't as straight-forward as multiplying by three (actually, it > would be four because of the transparency value in addition to rgb). There > are many other parts of the graph that needs to be represented (all having > rgba values) but there are also a lot of simplifications that are done to > reduce the amount of memory needed to represent these objects. > > ------------------------------------------------------------------------------ > Protect Your Site and Customers from Malware Attacks > Learn about various malware tactics and how to avoid them. Understand > malware threats, the impact they can have on your business, and how you > can protect your company and customers by using code signing. > http://p.sf.net/sfu/oracle-sfdevnl > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > ------------------------------------------------------------------------------ Protect Your Site and Customers from Malware Attacks Learn about various malware tactics and how to avoid them. Understand malware threats, the impact they can have on your business, and how you can protect your company and customers by using code signing. http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users