<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Title" content="">
<meta name="Keywords" content="">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.msoIns
{mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
color:teal;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body bgcolor="white" lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Imo, all existing collectors can be replaced by variations on G1. The first step was replacing CMS (though admittedly there’s still some way to go with that). The second is to replace the parallel collector with a throughput oriented G1
mode, which requires a parallel STW full GC. Full collections should indeed equal or exceed parallel GC performance, because the old gen is mostly compacted already, so you don’t have to do anything with most old gen regions. You just run the equivalent of
a mixed collection that includes all not-mostly-full old regions and promote the entire young gen. If you set throughput mode at VM startup, you shouldn’t need remembered sets either, just the card table. The third step is concurrent/parallel evacuation and
continuous concurrent/parallel collection. Shenandoah is almost there, Azul’s C4 is completely there.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">You can see this progression in Android too, btw. O-dessert (ships next month) includes a concurrent/parallel region-based GC that replaces the previous variation-on-CMS collector.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Paul<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">hotspot-gc-dev <hotspot-gc-dev-bounces@openjdk.java.net> on behalf of Roman Kennke <rkennke@redhat.com><br>
<b>Date: </b>Thursday, July 27, 2017 at 1:30 AM<br>
<b>To: </b>Milan Mimica <milan.mimica@gmail.com>, "hotspot-gc-dev@openjdk.java.net openjdk.java.net" <hotspot-gc-dev@openjdk.java.net><br>
<b>Subject: </b>Re: JEP 307: Parallel Full GC for G1<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Hi Milan,<br>
<br>
I cannot give an authoritative answer to that, but since Shenandoah is very similar in this respect, and from my experience with Shenandoah, I think that full GC is not a very high priority. It is meant as a last-ditch collection, when all else fails to free
enough space. In a good world, with perfect GC heuristics and well behaving applications, it should never happen, and thus performance shouldn't matter much.<br>
<br>
However, this world is not ideal, and full GC performance does matter, especially when you got a large heap, and run into it and lose *seconds* (or even minutes) on it.<br>
<br>
That being said, we do have a parallel full GC in Shenandoah, and its performance gets close to, and even sometimes exceeds, parallel GC. Maybe it's worth to adopt it for G1? It should be relatively straightforward, because both G1 and Shenandoah are region
based. It does compact objects towards the bottom of the heap, while mostly retaining their relative order.<br>
<br>
Roman<br>
<br>
Am 27.07.2017 um 10:15 schrieb Milan Mimica:<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi<o:p></o:p></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Can I have just a short explanation why G1 Full GC wasn't implemented as parallel in the first place, given "the assumption that nothing in the fundamental design of G1 prevents a parallel full GC."?<br>
<br>
<o:p></o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">sri, 26. srp 2017. u 23:11 <<a href="mailto:mark.reinhold@oracle.com">mark.reinhold@oracle.com</a>> napisao je:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p class="MsoNormal">New JEP Candidate: <a href="http://openjdk.java.net/jeps/307" target="_blank">
http://openjdk.java.net/jeps/307</a><br>
<br>
- Mark<o:p></o:p></p>
</blockquote>
</div>
</blockquote>
<p><o:p> </o:p></p>
</div>
</body>
</html>