By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
439,944 Members | 1,819 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 439,944 IT Pros & Developers. It's quick & easy.

Deleting objects on the fly

P: n/a
Hello,

I wish to know whether I should delete objects created on the fly via
the "del obj" statement. I noticed the RAM usage increased whenever
the application is being run for a long time. I am creating lots of
objects (messages) on the fly for communication between threads.

Rather than having python's gc to do the work, does it make a
difference if I force a deletion?

Thanks.

Aug 10 '07 #1
Share this Question
Share on Google+
6 Replies


P: n/a
On Aug 10, 2:25 am, Godzilla <godzillais...@gmail.comwrote:
Hello,

I wish to know whether I should delete objects created on the fly via
the "del obj" statement. I noticed the RAM usage increased whenever
the application is being run for a long time. I am creating lots of
objects (messages) on the fly for communication between threads.

Rather than having python's gc to do the work, does it make a
difference if I force a deletion?

Thanks.
Probably not, 'del x' just decrements the reference count, but
it is the gc who does the real job. See http://docs.python.org/ref/customization.html#l2h-175

Do you have reference cycles in your application? You should
tell us something more.

Michele Simionato

Aug 10 '07 #2

P: n/a
Michele Simionato wrote:
On Aug 10, 2:25 am, Godzilla <godzillais...@gmail.comwrote:
>Hello,

I wish to know whether I should delete objects created on the fly via
the "del obj" statement. I noticed the RAM usage increased whenever
the application is being run for a long time. I am creating lots of
objects (messages) on the fly for communication between threads.

Rather than having python's gc to do the work, does it make a
difference if I force a deletion?

Thanks.

Probably not, 'del x' just decrements the reference count, but
it is the gc who does the real job. See http://docs.python.org/ref/customization.html#l2h-175

Do you have reference cycles in your application? You should
tell us something more.

Michele Simionato
del x will remove x from memory if nothing else is refering to it, but
this dosnt really take the load off the GC since the GC will still check
the references and remove if there are none.

In some cases you could use to save ram...

a = 'really big string'
....do stuff with a...
del a

b = 'another really big string'
....do stuff with b...
del b
in the case that 'a' is not needed, after its used, and you dont want to
re-use the variable name. then del will free some ram since they both
wont need to exist at the same time.

WHen I say free ram, python its self will probably keep the ram for
later use but at least it wont need a and b in memory at once, so its
likely not to use as much ram.

But be careful using del in a loop since it can slow things down, its
like adding and removing an item from a dictionary many times. your
better off just redefining that variable or using del after the loops
finished.

Aug 10 '07 #3

P: n/a

"Campbell Barton" <cb*****@metavr.comwrote in message
news:46**************@metavr.com...
| Michele Simionato wrote:
| Probably not, 'del x' just decrements the reference count,

Or as
http://docs.python.org/ref/del.html
puts it, " Deletion of a name removes the binding of that name from the
local or global namespace,"

| del x will remove x from memory if nothing else is refering to it,

This is implementation dependent: true for CPython, not for Jython, ??? for
IronPython.

tjr

Aug 10 '07 #4

P: n/a
On Aug 10, 1:49 pm, "Terry Reedy" <tjre...@udel.eduwrote:
"Campbell Barton" <cbar...@metavr.comwrote in message

news:46**************@metavr.com...| Michele Simionato wrote:

| Probably not, 'del x' just decrements the reference count,

Or ashttp://docs.python.org/ref/del.html
puts it, " Deletion of a name removes the binding of that name from the
local or global namespace,"

| del x will remove x from memory if nothing else is refering to it,

This is implementation dependent: true for CPython, not for Jython, ??? for
IronPython.
Wait a second; do you mean to say that in Jython, del x will never
remove x from memory? How do you free up RAM?

Aug 11 '07 #5

P: n/a
Dustan <Du**********@gmail.comwrites:
| del x will remove x from memory if nothing else is refering to it,
This is implementation dependent: true for CPython, not for Jython, ??? for
IronPython.
Wait a second; do you mean to say that in Jython, del x will never
remove x from memory? How do you free up RAM?
It stays around until the GC picks it up.
Aug 11 '07 #6

P: n/a
Dustan wrote:
On Aug 10, 1:49 pm, "Terry Reedy" <tjre...@udel.eduwrote:
>"Campbell Barton" <cbar...@metavr.comwrote in message

news:46**************@metavr.com...| Michele Simionato wrote:

| Probably not, 'del x' just decrements the reference count,

Or ashttp://docs.python.org/ref/del.html
puts it, " Deletion of a name removes the binding of that name from the
local or global namespace,"

| del x will remove x from memory if nothing else is refering to it,

This is implementation dependent: true for CPython, not for Jython, ??? for
IronPython.

Wait a second; do you mean to say that in Jython, del x will never
remove x from memory? How do you free up RAM?
Because the exact method of garbage collection is independent of the
language definition, Jython uses the Java garbage collector, which works
(approximately) as follows.

In that language memory is allocated until a request cannot be
satisfies, then a scan is performed for unreferenced objects whose space
is reclaimed. Only if this doesn't yield enough space to allocate the
new object is more memory requested from the OS by the process.

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------

Aug 11 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.