Was just following your example, you were nowhere calling collect.
Here is what you requested:
In [1]: import gc
In [2]: import matplotlib.cbook as cbook
In [3]: data = ones((1500,1500,3))
In [4]: hold(False)
In [5]: imshow(data)
Out[5]: <matplotlib.image.AxesImage object at 0x1c43e50>
In [6]: gc.collect()
Out[6]: 12
In [7]: cbook.report_memory()
Out[7]: 174540
In [8]: imshow(data)
Out[8]: <matplotlib.image.AxesImage object at 0x1c59e90>
In [9]: gc.collect()
Out[9]: 0
In [10]: cbook.report_memory()
Out[10]: 253400
In [11]: imshow(data)
Out[11]: <matplotlib.image.AxesImage object at 0x1c603b0>
In [12]: gc.collect()
Out[12]: 0
In [13]: cbook.report_memory()
Out[13]: 333360
In [14]: imshow(data)
Out[14]: <matplotlib.image.AxesImage object at 0x1c60410>
In [15]: gc.collect()
Out[15]: 0
In [16]: cbook.report_memory()
Out[16]: 413296
ยทยทยท
On 2010-07-14 18:45:35 +0200, John Hunter said:
On Wed, Jul 14, 2010 at 11:38 AM, K.-Michael Aye > <kmichael.aye@...287...> wrote:
Out[12]: 1
In [13]: gc.collect()
Out[13]: 12
still not seeing a leak in your data -- you need to report_memory
after calling gc collect. Turn off hold, add an image, call collect,
report memory, the repeat several times, each time calling collect and
report memory, and report the results.