garbage collection

Alexandre Oliva oliva at
Wed May 20 03:25:12 PDT 1998

Davor Cubranic <cubranic at> writes:

> how the objects get freed when they are no longer needed. Admittedly, my 
> program was fairly simple, but I was unable to get any of objects that were 
> temporarily created to be freed.

call System.gc() explicitly, or remove the bounds from your loop.  The
heap grows in large chunks and, before allocating a new chunk, the
garbage collector takes control and tries to free as much memory as
possible, so as to avoid growing the heap.

Since the GC runs as a low priority thread, and context switching is
not preemptive, don't expect it to run unless you leave some free CPU
for it to run.  Inserting `Thread.sleep(10);' in the loop may help
too.  I don't think `Thread.yield();' would help, because GC gets
lower priority.

Alexandre Oliva
mailto:oliva at mailto:aoliva at
Universidade Estadual de Campinas, SP, Brasil

More information about the kaffe mailing list