Glad that worked, I've opened this bug to track fixing this: http://ironpython.codeplex.com/WorkItem/View.aspx?WorkItemId=25478
> -----Original Message----- > From: [email protected] [mailto:users- > [email protected]] On Behalf Of Jonathan Howard > Sent: Wednesday, November 25, 2009 9:45 AM > To: [email protected] > Subject: Re: [IronPython] Memory Leak in IronPython 2.6 RC3 > > That looks like it's removing that memory leak. I'm not positive > that's the one we're having in our production code, but it certainly > can't hurt. > > On Nov 25, 5:37 am, Dino Viehland <[email protected]> wrote: > > My guess here (I'm on vacation so I haven't tried this) is that some > exception info > > is not getting cleared - > > > > ExceptionHelpers.DynamicStackFrames = null; > > > > In the catch block will probably fix it although we should probably > > do this ourselves. > > > > > > > > > > > > > -----Original Message----- > > > From: [email protected] [mailto:users- > > > [email protected]] On Behalf Of Jonathan Howard > > > Sent: Tuesday, November 24, 2009 4:45 PM > > > To: [email protected] > > > Cc: [email protected] > > > Subject: [IronPython] Memory Leak in IronPython 2.6 RC3 > > > > > I'm trying to track down a memory leak in our hosted IronPython > > > application as we upgrade to 2.6 from 1.1.2. I saw a post at > > > stackoverflow (http://stackoverflow.com/questions/1664567/embedded- > > > ironpython-memory-leak > > > ) showing how to set up the environment to avoid leaking memory, but > > > we're still having a memory leak. If I take our identical setup code, > > > and use it on very simple code, there's no problem, but we have > > > thousands of lines of Python at this point. > > > > > Below is a minimum way to introduce a memory leak inside a hosted > > > IronPython application. I don't know if it's the only way, or if it's > > > what's affecting us, but it does cause a leak: (Obviously it needs > > > the appropriate DLLs etc.) > > > > > ############################################# > > > > > using System; > > > using System.Threading; > > > using IronPython.Hosting; > > > using IronPython.Runtime; > > > using IronPython.Compiler; > > > using System.Collections.Generic; > > > using Microsoft.Scripting.Hosting; > > > > > namespace IPyTest > > > { > > > class Program > > > { > > > static void Main(string[] args) > > > { > > > bool cont = true; > > > while (cont) > > > { > > > var ipy = new IPy(); > > > try > > > { > > > // Set the below boolean to "false" to run without > > > a memory leak > > > // Set it to "true" to run with a memory leak. > > > ipy.run(true); > > > } > > > catch { } > > > } > > > } > > > } > > > > > class IPy > > > { > > > private string scriptWithoutLeak = "import random; > > > random.randint(1,10)"; > > > private string scriptWithLeak = "raise Exception(), 'error'"; > > > > > public IPy() > > > { > > > } > > > > > public void run(bool withLeak) > > > { > > > //set up script environment > > > Dictionary<String, Object> options = new > > > Dictionary<string, object>(); > > > options["LightweightScopes"] = true; > > > ScriptEngine engine = Python.CreateEngine(options); > > > PythonCompilerOptions pco = (PythonCompilerOptions) > > > engine.GetCompilerOptions(); > > > pco.Module &= ~ModuleOptions.Optimized; > > > engine.SetSearchPaths(new string[]{ > > > @"C:\Program Files\IronPython 2.6\Lib" > > > }); > > > ScriptRuntime runtime = engine.Runtime; > > > ScriptScope scope = runtime.CreateScope(); > > > var source = engine.CreateScriptSourceFromString( > > > withLeak ? scriptWithLeak : scriptWithoutLeak > > > ); > > > var comped = source.Compile(); > > > comped.Execute(scope); > > > runtime.Shutdown(); > > > } > > > } > > > } > > > _______________________________________________ > > > Users mailing list > > > [email protected] > > >http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > > > _______________________________________________ > > Users mailing list > > [email protected]http://lists.ironpython.com/listinfo.cgi/users- > ironpython.com > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com _______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
