GC and static data (Was: Projects)

Godmar Back gback@cs.utah.edu
Mon May 1 18:28:00 GMT 2000


Here are some numbers regarding write barriers you may find useful.
For a single run of the SpecJVM98 benchmarks, I counted the following
number of writes that would require a write barrier in a generational
or incremental collector.
Benchmark & Barriers 
\hline
compress & 0.017M 
jess & 7.9M 
db & 33.0M 
javac & 15.5M 
mpegaudio & 5.5M 
mtrt & 3.0M 
jack & 11.6M
I don't have numbers about how many writes would cause a generational
segfault (which is where it really hurts when you use hardware support).
Nevertheless, I believe that there is hope that there may be no need
to resort to hardware-supported write barriers. If I recall Jon Olson's
mail right, he was able to implement software write barriers in a few 
instructions while no gc was taking place.
Multiply the numbers above by a guess how many cycles the avg common case 
takes, and you get a total overhead in the single percents (my half-educated
guess - of course, this ratio will change in the future).
This small overhead should be something you're willing to pay for the 
increased responsiveness of an incremental scheme, or something easily offset 
and surpassed by the reduced gc time a generational collector offers.
Of course, hardware support may still be better for certain applications 
where there is a mature generation that quickly stabilizes. However, as
Hans hinted, there's a lot of sometimes hairy machine specific code 
to write (extracting fault addresses from sigcontexts that change in
every OS release, possibly inspection of faulting instructions etc. pp.)
with the resulting potential decrease in portability.
	- Godmar


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /