[armedbear-devel] Less-reflection branch: profiling and comparison with trunk

Alessio Stalla alessiostalla at gmail.com
Tue May 18 21:31:13 UTC 2010


On Tue, May 18, 2010 at 4:40 PM, Blake McBride <blake at mcbride.name> wrote:
> Dear Alessio,
>
> It sounds like you are doing some great stuff.  However, I wanted to
> be vocal about an issue that is critically important to me (for
> whatever that's worth).  Erik is aware of this so perhaps there is no
> potential issue.
>
> It is critically important for my use of ABCL that data _and_ code be
> GC'able by _Java_.  So, for example, I need to be able to load an
> infinite number of Lisp source files in a fixed amount of memory (so
> long as not all the functions are being referenced at the same time).
> This way I can load a Lisp source file, execute code, de-reference the
> entire package making the entire code module GC'able.
>
> I haven't completely tested this but I've been in communication with
> Eric and I believe this is possible now.
>
> I don't care about GC'ing individual functions necessarily, however,
> being able to completely GC either a source module or a package is
> important.

Hi Blake,

functions should be GCable both on trunk and on my branch. The
difference is that trunk uses a classloader per function, so the GC
granularity is finer: when a given function is not referenced anymore,
it is GCed along with its class and classloader. With a classloader
per FASL, as in my branch, I believe that a given function class
loaded from a FASL will only be GCed when *all* the other functions in
the same FASL are determined to be unreachable. Since you're speaking
about dereferencing a whole package, I think that GC of compiled
functions will occur just fine. But, to be sure, I'll do some tests;
thanks for raising the issue.

Cheers,
Alessio




More information about the armedbear-devel mailing list