Bugs item #1525678, was opened at 2006-07-20 03:57
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1525678&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Connelly (connelly)
Assigned to: Nobody/Anonymous (nobody)
Summary: exec and eval allocate lots of memory and do not free it
Initial Comment:
I'm not sure if this is a bug. The "bug" is that if I start a new Python
session, create a dict or list called d which takes around 2 MB of
memory, and then I set d = eval(repr(d)), the Python process now is
using ~38 MB of memory more than where it started at. The high
memory usage continues even after d is deleted.
Example 1:
% python
>>> # Memory use: 3216 KB
>>> d = dict.fromkeys(range(50000))
>>> # Memory use: 5400 KB
>>> d = eval('%r' % d)
>>> # Memory use: 41620 KB
>>> del d
>>> # Memory use: 40080 KB
I am using Python 2.4.1 (#65, Mar 30 2005) on Windows XP SP2 with
512 MB RAM.
If we start with a larger initial dict -- say
dict.fromkeys(range(1000**2)), then the line d = eval('%r' % d) can
easily cause the process to start paging to disk, even though both the
data structure and its string representation fit easily in memory.
Perhaps this behavior is due Python caching bytecodes. One
peculiarity about this "bug" is that if Example 1 is repeated with a
second variable such as "d2", which is set to the value
dict.fromkeys(range(50000,100000)), then the memory usage ends up
exactly at 40080 KB after the second "del" statement. If Python were
caching the bytecodes, then one would expect the repetition of the
example to put the memory usage at ~80000 KB.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1525678&group_id=5470
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com