[IronPython] Memory Leak in CreateScriptSource?

Dody Gunawinata empirebuilder at gmail.com
Fri Dec 26 16:36:37 CET 2008


With the GC.Collect lines removed, this is how it looks like (after counting
to 40,000). I started the tasklist command after around 25K.

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    146,840 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    147,948 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    148,344 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    153,616 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    154,064 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    156,364 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    160,612 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    174,568 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    180,232 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    189,904 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    192,856 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    198,900 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    201,572 K

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
IronPythonLeaker.exe          5296 Console                    1    201,604 K


On Fri, Dec 26, 2008 at 5:31 PM, Dody Gunawinata <empirebuilder at gmail.com>wrote:

> I run above code in a console using IronPython 2.0 Final Version and here
> is the output (on Vista) using Tasklist command. The final result doubles
> the in memory size; I stopped the measurement when it hits 12,000
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     33,532
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     39,204
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     43,692
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     42,952
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     45,888
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     45,928
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     45,956
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     44,992
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     49,520
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     50,592
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     50,636
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     52,632
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     52,788
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     52,884
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     53,032
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     62,916
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     62,456
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     67,668
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     65,880
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     72,260
> K
>
> Image Name                     PID Session Name        Session#    Mem
> Usage
> ========================= ======== ================ ===========
> ============
> IronPythonLeaker.exe          5248 Console                    1     73,644
> K
>
>
> On Thu, Dec 25, 2008 at 3:37 PM, Christian Schmidt <
> christian2.schmidt at gmx.de> wrote:
>
>> Hi,
>>
>> the following code snippet allocates constantly more and more memory.
>> Moving .Compile() outside the loop works as expected.
>>
>> private static void LeakTest()
>> {
>>  var runtime = Python.CreateRuntime();
>>  var engine = runtime.GetEngine("py");
>>  var sum = 0.0;
>>
>>  while (true)
>>  {
>>    var code = engine.CreateScriptSourceFromString("1.0+2.0").Compile();
>>    sum += code.Execute<double>();
>>    GC.Collect();
>>    GC.WaitForPendingFinalizers();
>>    GC.Collect();
>>    Console.WriteLine(sum);
>>  }
>> }
>>
>> Any ideas?
>>
>> Merry Christmas,
>>
>> Christian
>> _______________________________________________
>> Users mailing list
>> Users at lists.ironpython.com
>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>>
>
>
>
> --
> nomadlife.org
>
>


-- 
nomadlife.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/ironpython-users/attachments/20081226/e7005fee/attachment.html>


More information about the Ironpython-users mailing list