On Thu, Sep 2, 2010 at 10:35 AM, Patrick R. Michaud <pmich...@pobox.com> wrote:
> On Thu, Sep 02, 2010 at 03:02:43AM -0700, Paweł Pabian wrote:
>> Star 2010.08 release
>>
>> Run folloing code and it will start eating up memory quite fast.
>>
>> $ perl6 -e 'use Test; eval_lives_ok "" for 1..10000'
>>
>> [11:59] <moritz_> eval '' while 1; also leaks
>> [11:59] <moritz_> so I think it's eval() that leaks
>
> Currently each eval() execution results in compiling and
> loading at least two additional Parrot subs into memory
> that represent the eval'ed code.  As far as I can tell,
> once loaded there's currently no way for a Parrot Sub PMC
> to become "unloaded" or GC'ed -- it stays in memory until
> the process ends.  So, it's not too surprising the above leaks.
>
> We probably need to file a Parrot ticket to get Parrot to
> support garbage collection of Sub PMCs when they're no
> longer used.
>
> We might be able to find a way for eval() to cache the
> results of its compilation, so that if it's called again
> given the same string and from the same outer context
> it re-uses an already-compiled version rather than
> re-compiling things anew.  But I don't envision that
> being done anytime soon, and it won't help in the case
> where each eval string is in fact different on each
> evaluation.
>
> Pm
>

I wonder if this related to http://trac.parrot.org/parrot/ticket/783

-- 
Will "Coke" Coleda

Reply via email to