[gclist] Page grouping trick
Thu, 17 May 2001 19:53:16 +0100 (BST)
On Thu, 17 May 2001, Pekka P. Pirinen wrote:
> > moving collector. Each object could have a permanent address
> > composed of virtual page number and offset. On translation this will
> > translate to some offset in a physical page. This means we can copy
> > objects by copying and re-mapping. Any object lookup will NOT
> > require an object table lookup.
> I must be missing something: What would be the purpose of this moving?
> If the virtual addresses are permanent, your live data will not be
> compacted in any useful sense: It's still fragmented and allocating
> new objects still requires a free list (of free virtual ranges). So
> why did we expend the effort of moving it to different physical pages?
Hmm, that's a good point. However being able to move stuff easily allows
dynamic re-grouping, alleviating false sharing of physical pages for many
unrelated objects. This /could/ have a real impact on paging.
> The thing that's different about object tables is that each object, no
> matter how large, requires only one slot. I suppose if _all_ your
> objects are smaller than a page, you'll get the same simplicity. Then
> you hit the hardware limits mentioned.
I mentioned the idea to Rik van Riel and he recoiled in horror ;)
Maybe I should ask a more basic question: there is a fundamental clash
between fast object addressing and a moving collector. Some moving can be
allowed with Bartlett-style ambiguous roots collectors, but I'm not sure
about the trade-offs there. If I want a fully-moving collector, it seems
I must take the hit of indirection or implement some object-cache scheme
in h/w e.g. Mushroom-style. Is there a third way ?
I'm specifically interested in this question for Java. I can't have a
p.s. My sig appears to be particularly pertinent today ;)
"Understanding. A cerebral secretion that enables one having it to know
a house from a horse by the roof on the house. Its nature and laws have
been exhaustively expounded by Locke, who rode a house, and Kant, who
lived in a horse."
- Ambrose Bierce