Breadth-first vs. Depth-first

Raman Gupta rocketraman at
Tue Jun 10 18:23:45 UTC 2008

Tony Printezis wrote:
> I've never been enamored with the idea, I have to say. I just don't know
> how willing customers will be to do training runs. And remember to redo
> the training runs when their code changes. And do the training run with
> a realistic input ("Hey, your GC sucks. I did a training run with a 1MB
> DB input and when I loaded 50GB, the application went slower." Well,
> yeah....).
> Given that some of our customers are lurking here, I'd love to hear from
> them on this, actually...

As a customer, I can say... please no training runs! In my opinion,
that makes an already complicated system even more so, for what I
would think is marginal gain.

Something you may want to consider is allowing applications an
interface into the GC subsystem (I've brought this up on this list
before as well). In addition to the interface methods I suggested
previously, you could add:

  public void startingApplicationPreloadingPhase();

  public void startingApplicationSteadyStatePhase();

Applications that have the preloading/steady state behavior can then
signal the GC subsystem with the state of the application, which
allows you to start "training" the GC only at steady state, without
any guesswork on the part of the GC subsystem.

Any applications not using those functions will simply run as they do

Raman Gupta

More information about the hotspot-gc-dev mailing list