On 9/21/06, Rana Dasgupta <[EMAIL PROTECTED]> wrote:
Very nice and fast Xiao Feng :-) I read through your first submission and
had a couple of thoughts on how this could progress. Is it that to hook up
the two seperately managed spaces, some of the policies ( eg., promote
everything and have an upper limit on pause time  ) need become implicit?
Or can we build in some structures for policy support later, eg., if we want
to set aside a seperate creation space, and provide some concept of age
...maybe confine the copying implementation to a smaller aging space....

Rana, good comments, since that's also what I was thinking when I
built the directory structure. :-)

Originally, the directory structure was: gc/src/[gen| nursery| mature|
...]. Then I thought I shouldn't build the generations arrangement
into directory explicity. Rather, I created the directories according
to the collector algorithms, like gc/src/[gen| trace_forwarding|
mark_compaction | ...]. In this way, we have a couple of
flexibilities. For example, the generations arrangement is orthorgonal
to the collector algortihms, we can have one or more generations, and
each generation has its choice of collector algorithm. When there is
only one generation, the GC actually degenerates into a standalone
single collector.

Btw, both the first and second submissions have this structure
already. The second submission has only gc/src/mark_compaction so that
it can either be put under the same directory as the first submission
or it can be played with standalone. The idea is to facilitate other
developers' involvement.

This design is only what I am planning, not sure if how difficult (or
easy) it is to engineer. But I see no hard technical difficulty.
Desirably, GCv4.1 can be put under this structure as well. The policy
can then be a seperate issue from the collectors naturally.

I know that we made some assumptions upfront but I am not sure how well two
generations will work for the real apps( not Spec ) eg., where pause is
critical. We may want to keep policies orthogonal to this so that we are
flexible.

With a suitably sized nursery, the pause time can be constrained in
most collections when only nursery is collected. The live objects will
be accumulated in mature space till a certain threshold is reached and
then a mature collection is triggered. The pause time of mature
collection is usually bigger which may give users a spike in response
time. Parallel collection can reduce the latency, but the ultimate
solution should be concurrent GC, which is an area I am also looking
at but will only be the priority after parallel GCv5 is ready.
Hopefully all these will happen soon. :-)

Thanks,
xiaofeng

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to