[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Dec 17 22:18:12 2003 
Subject:Comparing Garbage Collectors 
From:steve 
Volume-ID:1031217.01 

Hi all,

Well I've been doing serious programming in Java for a couple of years
now.  My current project uses the highly regarded IntelliJ IDEA 
environment on my Mac OS X workstation.  I noticed that the heap was 
getting fairly large, about 90Mb.  As I was about to take a break I
decided to invoke the garbage collector (just for fun).

To my amazement, this caused my Mac to buckle at the knees as if I 
had asked it to do something difficult.  The cursor spun for a good
30 seconds and the entire user interface was unresponsive for perhaps
10-20 seconds.  I was quite surprised since my workstation has 900Mb 
of RAM, has a 800Mhz PPC processor which, though far from top of the
range, should easily cope with this demand.

To double-check that my expectation was realistic I fired up my
lackluster Linux box and launched Poplog.  I then switched off the 
copy-based garbage collector (probably unfavorable for Poplog)
and created a fairly messy data structure of 100Mb (exclusively
"full" data - no cheating with non-full data types.)  

I then triggered a garbage collection which Poplog completed in 
less than 6 seconds.  I messed around a bit further to see if I could
trip Poplog up but didn't succeed in getting the delay up to 6 seconds.
And, for comparison, this was on Pentium II (350Mhz) with 320Mb RAM.

I found this a very sobering observation.  Although the Java GC
is incremental and Poplog's is not, there are still plenty of 
disruptive breaks in the IDE as the GC kicks in.

I can't easily account for this massive discrepancy in performance.  
I presume, yet again, that John Gibson's work on the Poplog garbage 
collector is the source of the difference.  But the difference is
so extreme that I can't quite believe any explanation.  

Now one could argue that the performance of the garbage collector
isn't much of an issue in practice.  But when the IDE is running heaps
at +100Mb plus (and none of my applications execute in heaps in less
than +256Mb anyway) it is a key issue. 

There no immediate conclusion to this post - except to wonder how the
heck I can get Poplog onto my Mac OS X system pronto!

-- 
Steve