Strange GC behaviour,
Srinivas Ramakrishna
ysr1729 at gmail.com
Thu Dec 8 01:44:02 UTC 2011
Hi Nhan --
Make sure you have the recent fix to Reference object processing when doing
MT/Parallel marking with CMS; i don't have the CR handy, but the fix was
pushed by
Stefan not long ago. (The workaround was to disable parallel concurrent
marking via
-XX:-CMSConcurrentMTEnabled -- but of course the performance impact of that,
depending on yr platform, might compromise yr benchmarking results.)
More inline below:-
On Wed, Dec 7, 2011 at 2:20 PM, Dang Nhan Nguyen <nhann at chalmers.se> wrote:
> Hi guys,
>
> I am benchmarking CMS collector and found it strange that there are many
> objects left in remark phase.
>
> When I check the issue again by only running foreground CMS (I changed
> the source code a bit to force CMS running in foreground), so there is no
> promotion during collecting (so no objects marked during Preclean and
> Abortable Preclean phase). Even in this case, I found that there are still
> many objects left in remark phase (in lusearch and tomcat in Dacapo
> benchmark, they are 10 times and 1/3 of number of objects marked in
> concmarking phase, while in suflow, they are just about 100 objects/refs).
> Most (maybe ALL) of these objects marked in remark phase were processed by
> refProcessingWork(). In turn, this refProcessingWork() run in single thread
> mode. The performance was reduced a lot because of this.
>
-XX:+ParallelRefProcEnabled uses multiple threads to do that phase.
>
> My questions are:
> 1. What kinds of references were processed by refProcessingWork()? weak
> and soft ref? what are exactly they are?
>
all objects of type java.lang.ref.Reference (includes WeakReferencem=,
SoftReference, FinalReference, PhantomReference).
> 2. While I only run CMS in stop-the-world, why are there still many
> objects left to be processed by remark, in particular here is
> refProcessingWork()? Why aren't these references/objects processed in
> concurrent marking phase?
>
I am not sure I understand the question. What do you mean by "run CMS in
stop-the-world"? Note that Reference objects are processed
by all kinds of collectors, young gen (minor) or whole heap (major),
stop-world or concurrent. The volume of those objects may
vary a bit between them based on the heap size, NewRatio etc.
hope that helped.
-- ramki
> Best,
> -Nhan Nguyen
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20111207/20b64b69/attachment.htm>
More information about the hotspot-gc-dev
mailing list