Deleting objects on the fly

G

Godzilla

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.
 
M

Michele Simionato

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
 
C

Campbell Barton

Michele said:
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.
 
T

Terry Reedy

| 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
 
D

Dustan

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?
 
P

Paul Rubin

Dustan said:
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.
 
S

Steve Holden

Dustan said:
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 -------------
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,009
Latest member
GidgetGamb

Latest Threads

Top