Hi guys -

If I execute the following:

###
from System.Diagnostics import Process

M = 1024 * 1024

import bigmodule

for i in range(1000):
    m = reload(bigmodule)
    print i, Process.GetCurrentProcess().PrivateMemorySize64 / M
###

(in IP 1.1.1), I see steadily increasing memory usage - the assemblies created by reloading each module are not being garbage collected. Talking to Giles (the boss here), he remembered a conversation with someone at the Languages.NET conference about how some assemblies aren't collectable, while others that are generated without debugging information can be collected.

Looking at the source for PythonEngine I can see the EngineOptions.ClrDebuggingEnabled property, with a comment saying essentially the same thing.

However, when I try to use this with the following code, I still get increasing memory usage.

###
from textwrap import dedent
from IronPython.Hosting import PythonEngine, EngineOptions
from System.Diagnostics import Process

M = 1024 * 1024

o = EngineOptions()
o.ClrDebuggingEnabled = False
p = PythonEngine(o)
p.Sys.path.append('.')

for i in range(1000):
    p.Execute(dedent('''\
    import bigmodule
    reload(bigmodule)
    '''))
    print i, Process.GetCurrentProcess().PrivateMemorySize64 / M
###

So the assemblies generated from compiling the imported module are still not collectable. (I've also tried running the first script in an interpreter (with ClrDebuggingEnabled off) embedded in a C# application, to make sure there's nothing untoward happening because of nested PythonEngines, but I see the same behaviour).

Is there any way to have these modules collected? Is the situation the same in IP 2.*?

Thanks,
Christian

--
Christian Muirhead
Resolver Systems
[EMAIL PROTECTED]
We're hiring! http://www.resolversystems.com/jobs/


Resolver Systems Ltd
17a Clerkenwell Road, London EC1M 5RD, UK
VAT No.: GB 893 5643 79 Registered in England and Wales as company number 5467329.
Registered address: 843 Finchley Road, London NW11 8NA, UK
_______________________________________________
Users mailing list
[email protected]
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to