[IronPython] clr.AddReference effect how GC work ?!?!?!?

Curt Hagenlocher curt at hagenlocher.org
Wed Apr 23 20:39:33 CEST 2008


On Wed, Apr 23, 2008 at 12:23 AM, Sakesun Roykiattisak
<sakesun at boonthavorn.com> wrote:
>
> However, if you uncomment the line "clr.AddReference('System')"
> and rerun it again the system will simple halt, memory usage
> will keep raising.

I've been playing with this a bit while waiting for builds to finish
today, and I found some interesting things:

1. If you try to add a reference to a non-existent assembly, the
problem still happens.  Replace your clr.AddReference with the
following to demonstrate this:

try: clr.AddReference('System89')
except: pass

2. If you add a reference with a strong name, the problem does *not*
happen.  Replace your clr.AddReference with the following to
demonstrate this:

clr.AddReference('System, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089')

The primary difference between the two is that the former results in a
call to both Assembly.Load and Assembly.LoadWithPartialName -- each of
which trigger the AssemblyResolve event on the AppDomain -- while the
latter is resolved by Assembly.Load without ever firing
AssemblyResolve.

--
Curt Hagenlocher
curt at hagenlocher.org



More information about the Ironpython-users mailing list