Collection of DefNewGeneration
jon.masamitsu at oracle.com
Mon Aug 10 03:03:06 UTC 2015
Look at the code in GenCollectedHeap::gen_process_roots()
705 rem_set()->younger_refs_iterate(_old_gen, older_gens,
The defNew collect() copies live objects that it finds in the defNew
For objects in the young gen that are pointed to from the old
uses a remembered set (in the form of a card table). The card table
tells the defNew
collect() where to look for objects in the young generation referenced
from the old
On 8/8/2015 9:50 AM, Abhinav Jangda wrote:
> Hello everyone,
> I was trying to understand how serial generational gc works in
> Hotspot. I was able to understand how TenuredGeneration is marked
> using different OopClosures. I can see how beautifully the concept of
> Visitor Design Pattern has been used.
> But I am having a slight difficulty in understanding how
> DefNewGeneration works.
> I do understand that DefNewGeneration::collect method is called which
> then calls GenCollectedHeap::gen_process_strong_roots. This is same as
> the TenuredGeneration::collect calls
> GenCollectedHeap::gen_process_strong_roots but in both of these cases
> the OopClosure are different. In TenuredGeneration::collect,
> FollowRootClosure (There are 3 closures but let us focus on only one
> of them) is used and in DefNewGeneration::collect, FastScanClosure is
> used. Well, the problem starts here.
> In FollowRootClosure::do_oop method, the oop to be traversed is pushed
> on the marking stack which then is able to follow the contents of this
> oop. In FastScanClosure there is no such thing. In
> FastScanClosure::do_oop_work method, the oop is first checked whether
> it is in this generation and only if it is then oop is transferred to
> another space/generation. oop's fields are not traversed like they are
> in FollowRootClosure. Let us suppose the root object is not in the
> DefNewGeneration but its fields are. So, in this case the fields
> wouldn't be traversed?
> How, the fields of root objects are traversed in the case of
> FastScanClosure? If they are traversed by some other way and
> FastScanClosure use the result of it, then please tell me that.
> Please help me, a small function name or hint should be enough for me.
> Thank You,
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the hotspot-gc-dev