<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7735872642513631302</id><updated>2012-03-01T04:48:00.594Z</updated><category term='indexes'/><category term='grid patterns'/><category term='Moscow'/><category term='Oracle Coherence'/><category term='data structures'/><category term='Lucene'/><category term='POF'/><category term='java'/><category term='write behind'/><category term='garbage collection'/><category term='tech talk'/><category term='gridkit'/><category term='serialization'/><category term='performance'/><category term='memory'/><category term='data stores'/><category term='~GridDynamics'/><category term='architecture'/><category term='russian'/><category term='conferences'/><category term='replication'/><category term='GemFire'/><category term='data grid'/><category term='grid'/><title type='text'>Alexey Ragozin</title><subtitle type='html'>All my articles on the net</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.ragozin.info/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>43</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-6779604620998749598</id><published>2012-02-17T13:04:00.001Z</published><updated>2012-02-21T06:37:11.273Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Coherence'/><title type='text'>POF serialization, beware of arrays</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;As you may have experienced yourself, object marshaling/serialization oftenlays on performance critical path in distributed system (especially in Java). Default Java serializationis almost always is a poor choice, countless alternatives was developed toreplace it. &lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18677/api_pof.htm"&gt;POF&lt;/a&gt; (portable object format) is binary object serialization formatwhich was developed by Oracle Coherence team with both cross platform andefficiency in mind (POF can be compared to &lt;a href="http://thrift.apache.org/"&gt;Thrift&lt;/a&gt; or &lt;a href="http://code.google.com/p/protobuf/"&gt;ProtoBuf&lt;/a&gt;). While being compact and efficient POF is also offeringadvanced features such as access to specific attributes of object withoutdeserializing whole thing.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;But sometime avoiding deserialization may be more expensivethan deserialization itself. Below is a short story of my experience worthsharing.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;Recently, I was working on Coherence based solution. After another set code changes, automatic test has shown sudden performance degradation. Oneof aspect of change set was replacing reflection based filters with ones using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/PofExtractor.html"&gt;PofExtractor&lt;/a&gt;&lt;/span&gt;.Surprisingly, times of operations which were relying on affected filters haveincreased about 20 times! While &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/PofExtractor.html"&gt;PofExtractor&lt;/a&gt;s&lt;/span&gt;are not always faster compared to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/ReflectionExtractor.html"&gt;ReflectionExtractor&lt;/a&gt;s&lt;/span&gt;in my practice, 20 times slowdown seems to be totally unreasonable. Anyway, switch to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/PofExtractor.html"&gt;PofExtractor&lt;/a&gt;&lt;/span&gt; was made to avoid classpath dependency, so switching back to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/ReflectionExtractor.html"&gt;ReflectionExtractor&lt;/a&gt;&lt;/span&gt; was not an option.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Profiling session have showing interesting results:&lt;/div&gt;&lt;ul&gt;&lt;li&gt;objects were never completely deserialezed (as expectedwith &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/PofExtractor.html"&gt;PofExtractor&lt;/a&gt;&lt;/span&gt;),&lt;/li&gt;&lt;li&gt;filter execution indeed was a bottleneck,&lt;/li&gt;&lt;li&gt;more targeted profiling have identified method &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/io/pof/PofHelper.html"&gt;PofHelper&lt;/a&gt;.skipUniformValue()&lt;/span&gt;as a hot spot.&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;While &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/io/pof/PofHelper.html"&gt;PofHelper&lt;/a&gt;.skipUniformValue()&lt;/span&gt;is expected to be heavy duty method (it is used to parse POF binary stream seeking attribute to be extracted), it was eatingunproportionally large amount of CPU. Instrumentation profiling have revealedone more fact - &lt;b&gt;few thousands&lt;/b&gt; of calls to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;skipUniformValue()&lt;/span&gt;have been made for &lt;b&gt;each call&lt;/b&gt; to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/PofExtractor.html"&gt;PofExtractor&lt;/a&gt;.extractFromEntry()&lt;/span&gt;.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;Well, that could explain HOW code gets slow, but questions are WHY and how to fix it.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;Object, I was working with in application, were mostly wrapperaround a chunk of data in proprietary encoded binary format. Few attributeswere extracted and stored as fields of java objects, but larges part of object wasa single chunk of binary data. This chunk were stored as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;byte[]&lt;/span&gt; in Java and written using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeByteArray()&lt;/span&gt; in POF stream. Thereis another method suitable for this task &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeBinary()&lt;/span&gt;,but using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeByteArray()&lt;/span&gt; justfeels more convent. That was a key mistake. &lt;/div&gt;&lt;h4&gt;POF array vs. binary&lt;/h4&gt;&lt;div class="MsoNormal"&gt;POF can encode numbers using variable length format, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeByteArray()&lt;/span&gt; encodes &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;byte[]&lt;/span&gt; as an array of variable lengthobjects. Well actually they are all exactly one byte at length, but generic POFdecode still inspects each byte to calculate array length (and for each byte itwould be calling &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;skipUniformValue()&lt;/span&gt;which is huge method with switch case for every possible POF data type) . Oncontrary, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeBinary()&lt;/span&gt;writesopaque blob, so parser just reads its size and skips it in single operation.&lt;/div&gt;&lt;div class="MsoNormal"&gt;I have replaced &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeByteArray()&lt;/span&gt;with &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeBinary()&lt;/span&gt; (you may alsowant to replace read code, but it is not necessary &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;readByteArray()&lt;/span&gt;can parse &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/Binary.html"&gt;Binary&lt;/a&gt;&lt;/span&gt;from stream and convert it &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;byte[]&lt;/span&gt;for you). It have solved problem.&lt;br /&gt;&lt;br /&gt;Below is comparison of extractor times with various amountsof binary data inside object, using 2 versions of serialization. &lt;/div&gt;&lt;div class="MsoNormal"&gt;Please mind difference in scale between diagrams, it is an order ofmagnitude!&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-FphzgPYxjkQ/Tz5N96ZimlI/AAAAAAAAKTU/lN-fJ0Liz0Y/s1600/blog-23.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://4.bp.blogspot.com/-FphzgPYxjkQ/Tz5N96ZimlI/AAAAAAAAKTU/lN-fJ0Liz0Y/s400/blog-23.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UXUBRSzr350/Tz5N5KQNLNI/AAAAAAAAKTM/WJV1F3LBMcg/s1600/blog-22.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://1.bp.blogspot.com/-UXUBRSzr350/Tz5N5KQNLNI/AAAAAAAAKTM/WJV1F3LBMcg/s400/blog-22.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;/div&gt;&lt;h4&gt;Summary&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Ok, use &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;writeBinary()&lt;/span&gt;will help you with byte arrays, but what if you need to store &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;float[]&lt;/span&gt; or other array type?&lt;/div&gt;&lt;div class="MsoNormal"&gt;If arrays are not large it is ok, but if they are, then youshould avoid use of &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;a href="http://docs.oracle.com/cd/E18686_01/coh.37/e18683/com/tangosol/util/extractor/PofExtractor.html"&gt;PofExtractor&lt;/a&gt;s&lt;/span&gt;,use normal extractors instead.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;I hope this performance issue will be fixed eventually, &lt;br /&gt;butuntil it is fixed, &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;br /&gt;beware of arrays in your POF objects!&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-6779604620998749598?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/6779604620998749598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2012/02/pof-serialization-beware-of-arrays.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/6779604620998749598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/6779604620998749598'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2012/02/pof-serialization-beware-of-arrays.html' title='POF serialization, beware of arrays'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-FphzgPYxjkQ/Tz5N96ZimlI/AAAAAAAAKTU/lN-fJ0Liz0Y/s72-c/blog-23.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-1070374160705465071</id><published>2011-12-14T05:08:00.001Z</published><updated>2011-12-14T05:09:34.355Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='grid patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='data grid'/><title type='text'>Data Grid Pattern - Canary key set</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;Most of modern in-memory-data-grid products have grown fromdistributed caching. For traditional cache, loss of data is not a big deal,missing data could always be recovered from backend storage via read through.Main focus of distributed cache is data coherence between nodes (preventingstale reads, etc).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Advanced patterns like all-in-memory and proactive cachingmay provide considerable benefits over traditional read through cache. Butsimple fall back to read-through as a strategy for data recovery may not be anoption for these advanced cache usages. Read-through have two prerequisite tobe implemented:&lt;ul&gt;&lt;li&gt;data should be accessed by primary key,&lt;/li&gt;&lt;li&gt;for given primary key, you should known itsmaster data source.&lt;/li&gt;&lt;/ul&gt;Both these prerequisite may be broken in advanced solution.Having all-data in memory will allow you to execute queries in cache layerinstead of backend database. Products like Oracle Coherence, GemStone GemFireand GigaSpaces have advanced queering capabilities (including non-primary indexessupport). Offloading queries from database is a huge win, but the price is thatyou cannot rely on read-through any more. If some data is missing in cache,queries will produce incomplete results without warning.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Second read-through prerequisite also may be sacrificed,i.e. by using multiple backends (cache acting as aggregator for data setscattered across multiple databases). You can more details in my &lt;a href="http://aragozin.blogspot.com/2011/10/grid-pattern-proactive-caching.html"&gt;previousarticle&lt;/a&gt;.&lt;/div&gt;&lt;h4&gt;Data loss imminent&lt;/h4&gt;&lt;div style="background: #FFFF99; border: solid #984806 1.0pt; mso-border-themecolor: accent6; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FFFF99; border: none; mso-border-alt: solid #984806 1.0pt; mso-border-themecolor: accent6; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;Please mention, that loss of data in modernin-memory-data-grid is an exceptional event. Data is usually protected bymultiple replicas and grid can tolerate server failure. But it still possibleand you cannot ignore this aspect as you cannot ignore e.g. backing up your database.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Through all reliability provided by data grid technologydata &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;maybe&lt;/i&gt;&lt;/b&gt; lost and it means they &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;will be&lt;/i&gt;&lt;/b&gt; lost eventually. Nextquestion, what is your desired strategy to cope with incomplete data set? &lt;/div&gt;&lt;div class="MsoNormal"&gt;It depends on type of application.&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;For some applications, it is ok to haveincomplete results from application during recovery window.&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;For some application, incomplete response isworst than no response. Application should guaranty that every response iscomplete and if it cannot provide complete response (e.g. part of data set ismissing in cache) it should raise an error.&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="margin-left: 1.85pt;"&gt;First strategy is rather simple,you should monitor your grid and automatically trigger recovery procedure if disastrousevent is detected.&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.85pt;"&gt;Second type of strategy is moretricky in implementation. Just monitoring is not an option. &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;There would be a gap between data loss eventand reaction of monitoring system (which e.g. can switch service to offlinemode for duration recovery process). Some application are totally intolerant toinconsistent data. This data, for example, could be used in complex batch of financialrisk calculations (running for few hours in large HPC grid) and single inconsistentpiece of input data could invalidate whole batch of work.&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.85pt;"&gt;We need a solution better thanmonitoring for such kind of applications.&lt;/div&gt;&lt;h4&gt;Canary keys to detect missing data&lt;/h4&gt;&lt;div class="MsoNormal"&gt;We must guaranty that result of each query is consistent(i.e. all data that has to be processed has been processed, often this means -whole dataset). Here we have a paradox at hands: we must check presence of&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;certain key/value pairs (data grid is akey/value storage) in cache, but we cannot know keys of these pairs or even theirtotal number.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Solution to this paradox lies in base approach of datadistribution used by data grids. Technique described in this article has beenused by me with Oracle Coherence grid, but idea can also be applied to otherproducts using similar type of DHT. Oracle Coherence is using partitioneddistributed hash table (DHT). In practice this means that key/value pairs arenot distributed individually, but whole partition is assigned to particular node.It also means, that you cannot lose individual key/value pair but only wholepartition at once (if you lose all replicas of that partition at the same time).Number of partitions is fixed for live time of grid (changing that numberrequires rebuild of DHT).&lt;/div&gt;&lt;div class="MsoNormal"&gt;How this could be helpful to ensure data completeness?&lt;/div&gt;&lt;div class="MsoNormal"&gt;We may not be caring about presence of individual key/valuepairs, instead we may check presence of all partitions (and we know their exactIDs and total number). But how we can check presence of partition (technicallypartition cannot be missing, it will be just empty)? Also we should join datacompleteness check with queering of data in the same operation otherwise wewill always have a gap of uncertainty.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Canary keys is a trick to solve this problem. Canary keysare synthetic keys, you put just on key to each partition. Every partitionshould have a canary key. So if your grid is configured to have N partitions,it should contain exactly N canary keys. If number of canary keys is less thanN, that means portion of data has been lost (poor canary has perished) and isnot recovered yet. Of cause your data loading/recovery procedure should put canarykeys back in cache once data is restored.&lt;/div&gt;&lt;div class="MsoNormal"&gt;It is also possible (though quite awkward to be honest) to integratecanary keys check in single request with data queering. In each query youshould select canary keys along with actual data you need to retrieve. Oncequery is executed you should check presence of all canaries and then strip themfrom result set. If all of them are there, you can be sure that your result setin complete and no SLA would be broken. If some canaries are missing, youshould trigger data recovery and/or raise an error indicating that requestcannot be completed until recovery is done.&lt;/div&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Technique described in this article is very advanced. Mostapplications do not require such rigorous consistency checks for everyoperations. But few do, and for them this approach may be useful (still implementationmay have its quirks).&lt;/div&gt;&lt;div class="MsoNormal"&gt;On high level canary keys technique demonstrate how understandingof &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;core principles of DHT can helpsolving challenging task. Understanding of low level grid operations, their guarantiesand limitation is a cornerstone in engineering of complex data processingsolution using distributed ACID-less data grid as a storage.&lt;/div&gt;&lt;h4&gt;See also&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Open source implementation of canary keys framework - &lt;a href="http://code.google.com/p/gridkit/wiki/DataLossListener"&gt;http://code.google.com/p/gridkit/wiki/DataLossListener&lt;/a&gt;.&lt;/div&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-1070374160705465071?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/1070374160705465071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/12/grid-pattern-canary-key-set.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/1070374160705465071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/1070374160705465071'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/12/grid-pattern-canary-key-set.html' title='Data Grid Pattern - Canary key set'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-5833783123779307623</id><published>2011-12-04T18:25:00.001Z</published><updated>2011-12-04T18:31:49.203Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><title type='text'>Garbage collection in HotSpot JVM</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;In this blog you may find few in-depth articles related togarbage collection in Oracle's HotSpot and other JVMs. But if you a novice infield of garbage collection, you may feel lost due to level of details. So I decidedthat high level overview of GC modes in HotSpot would add nicely to existingfairly detailed content.&lt;br /&gt;&lt;h4&gt;Foreword&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Java (and dominating majority of other modern languages)features automatic memory management aka garbage collection. Once instance of objectbecomes unreachable from executing program, it is classified as garbage and,eventually, its memory should be added to free pool.&lt;/div&gt;&lt;div class="MsoNormal"&gt;One of simplest approaches to automatic memory management isreference counting. But it has serious limitation though, inability to handle cycliclinks in object graph.&lt;/div&gt;&lt;div class="MsoNormal"&gt;If we want to find all effectively unreachable objects, the onlyway is to find &lt;b style="mso-bidi-font-weight: normal;"&gt;all&lt;/b&gt; reachable viarecursive object graph traversing. It may sound like a complicated task and itreally is. &lt;/div&gt;&lt;div class="MsoNormal"&gt;Garbage collection in modern JVMs including Oracle's HotSpotis a result of lengthy evolution. Huge amounts &amp;nbsp;hard work was put into them, to make them asefficient as they is now. Of cause they may have limitations, deficiencies butin most time this due to tradeoffs which was made for reason. So, please thinktwice before blaming JVM garbage collector being slow or stupid. Most likelyyou just underestimating complexity of its work.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Ok, now, let me get straight to garbage collection in HotSpotJVM circa 2011. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;h3&gt;HotSpot JVM circa 2011&lt;/h3&gt;&lt;div class="MsoNormal"&gt;HotSpot has several GC modes. Modes are controlled with JVMcommand line options.&amp;nbsp; Default GC mode dependson JVM version, client/server mode of JVM and hardware you are running on (JVMdistinguish server and desktop grade hardware by set of heuristics).&lt;/div&gt;&lt;h4&gt;Serial GC&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch:&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt; -XX:+UseSerialGC&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Serial GC is generational garage collection algorithm (ifyou wander what generation means, &lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html"&gt;readthis article&lt;/a&gt;). &lt;/div&gt;&lt;div style="background: #FFFF99; border: solid #984806 1.0pt; mso-border-themecolor: accent6; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FFFF99; border: none; mso-border-alt: solid #984806 1.0pt; mso-border-themecolor: accent6; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;Actually all GC modes in HotSpot are usinggenerational approach, so won't repeat it for every GC mode.&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Young collection is a copy collection. Old space iscollected using an implementation of mark/sweep/compact (MSC) algorithm. Both,young and old, collections require stop-the-world (STW) pause and, as namesuggests, are executed by single thread. During old space collection, all liveobjects are moved to beginning of space. This allows JVM to return unusedmemory to OS.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;If you enable GC logging by &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+PrintGCDetails&lt;/span&gt;&lt;/b&gt; you will see followingindicators of GC pauses in log:&lt;/div&gt;&lt;h5&gt;Young collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;41.614 [GC 41.614: [DefNew:130716K-&amp;gt;7953K(138240K), 0.0525908 secs] 890546K-&amp;gt;771614K(906240K),0.0527947 secs] [Times: user=0.05 sys=0.00, real=0.05 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;Full (young + old + perm) collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;41.908 [GC 41.908: [DefNew:130833K-&amp;gt;130833K(138240K), 0.0000257 secs]41.909: [Tenured:763660K-&amp;gt;648667K(768000K), 1.4323505 secs] 894494K-&amp;gt;648667K(906240K),[Perm : 1850K-&amp;gt;1850K(12288K)], 1.4326801 secs] [Times: user=1.42 sys=0.00,real=1.43 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Parallel scavenge&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch:&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt; -XX:+UseParallelGC&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Some phases of garbage collection could be naturally parallelizedbetween multiple threads. Parallel processing can reduce time required for GCand thus STW pause duration by keeping multiple physical CPU cores busy. Adoptionof multiprocessor/multicore hardware have made parallelization of GC a must formodern VM.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Parallel scavenge GC mode is using parallel implementationof young collection algorithm. Old space is still collected by one thread. Thus,using this mode may shorten young collection pauses (which are more frequent),but still suffers from long full collection freezes.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Log output samples for parallel scavenge.&lt;/div&gt;&lt;h5&gt;Young collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;59.821: [GC [PSYoungGen:147904K-&amp;gt;4783K(148288K)] 907842K-&amp;gt;769258K(916288K), 0.2382801 secs][Times: user=0.31 sys=0.00, real=0.24 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;Full collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;60.060: [Full GC [PSYoungGen:4783K-&amp;gt;0K(148288K)] [PSOldGen: 764475K-&amp;gt;660316K(768000K)]769258K-&amp;gt;660316K(916288K) [PSPermGen: 1850K-&amp;gt;1850K(12288K)], 1.2817061secs] [Times: user=1.26 sys=0.00, real=1.28 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Parallel old GC&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch:&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt; -XX:+UseParallelOldGC&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This mode is a incremental improvement over parallelscavenge mode. It adds parallel processing (parallel mark-sweep-compact (MSC)algorithm) for old space collection. Young space is using same algorithm asmode above. Old space collection still requires quite long STW pause, but nowmultiple cores could be employed to make it shorter. Unlike serial MSC,parallel version does not create single continuous free memory region at theend of heap, so JVM cannot return memory to OS after full GC in this mode.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Log output samples for parallel old GC.&lt;/div&gt;&lt;h5&gt;Young collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;65.411: [GC [PSYoungGen:147878K-&amp;gt;5434K(144576K)] 908129K-&amp;gt;770314K(912576K), 0.2734699 secs][Times: user=0.41 sys=0.00, real=0.27 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;Full collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;65.685: [Full GC [PSYoungGen:5434K-&amp;gt;0K(144576K)] [ParOldGen: 764879K-&amp;gt;623094K(768000K)]770314K-&amp;gt;623094K(912576K) [PSPermGen: 1850K-&amp;gt;1849K(12288K)], 2.5954844 secs][Times: user=3.95 sys=0.03, real=2.60 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Adaptive size policy&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch:&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt; -XX:+UseAdaptiveSizePolicy&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This is a special mode of parallel scavenge collector inwhich it can dynamically adjust configuration of young space to adapt for anapplication. IMHO it does not bring much benefits. Never seriously tried to usethis option.&lt;/div&gt;&lt;h4&gt;Concurrent mark sweep&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch: &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+UseConcMarkSweepGC&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;While collectors above are generally called throughputcollectors. Concurrent mark sweep (CMS) is low pause collector. It is designedto minimize stop-the-world JVM pauses and thus keep application responsive. Foryoung space collection it may use either serial copy collector or parallel one(parallel alhorithm is similar to algorithm in parallel scavenge mode, but theyare two totally different code bases and they may use slightly differentconfiguration options, e.g. adaptive size policy is not implemented for CMS).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Old (and if enabled permanent) space a collected by mostlyconcurrently. As name suggests CMS &amp;nbsp;ismark sweep algorithm (notice lack of compact in its name). CMS requires onlytwo short pauses during each old space collection cycle. But unlike itsstop-the-world counterparts, CMS cannot do compaction (relocate objects inmemory) and this makes it prone to fragmentation. CMS is using &lt;a href="http://aragozin.blogspot.com/2011/11/java-gc-hotspots-cms-promotion-buffers.html"&gt;sometricks&lt;/a&gt; to fight fragmentation, but it is still a threat.&lt;/div&gt;&lt;div class="MsoNormal"&gt;If concurrent collector fails to reclaim memory fast enoughto keep with application needs, JVM will fall back to serial stop-the-world mark-sweep-compact algorithm to defragment (and compact) old space (notice serial word,usually such pause would be 50-500 times longer than normal CMS pause).&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Log output samples for CMS.&lt;/div&gt;&lt;h5&gt;Young collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;613.154: [GC 13.154: [DefNew:130821K-&amp;gt;8230K(138240K), 0.0507238 secs] 507428K-&amp;gt;388797K(906240K),0.0509611 secs] [Times: user=0.06 sys=0.00, real=0.05 secs] &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;Concurrent old space collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;13.433: [GC [1 CMS-initial-mark:384529K(768000K)] 395044K(906240K), 0.0045952 secs] [Times: user=0.02 sys=0.00,real=0.01 secs] &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;13.438: [CMS-concurrent-mark-start]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.345: [CMS-concurrent-mark:0.412/0.907 secs] &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #00b050; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;[Times:user=1.20 sys=0.00, real=0.91 secs]&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.345:[CMS-concurrent-preclean-start]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.366: [CMS-concurrent-preclean:0.020/0.021 secs] &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #00b050; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;[Times:user=0.03 sys=0.00, real=0.02 secs]&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.366:[CMS-concurrent-abortable-preclean-start]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.707:[CMS-concurrent-abortable-preclean: 0.064/0.340 secs] [&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #00b050; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;Times: user=0.36 sys=0.02,real=0.34 secs]&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.707: [GC[YG occupancy: 77441 K(138240 K)]14.708: [Rescan (non-parallel) 14.708: [grey object rescan,0.0058016 secs]14.714: [root rescan, 0.0424011 secs], 0.0485593 secs]14.756:[weak refs processing, 0.0000109 secs] [1 CMS-remark: 404346K(768000K)]481787K(906240K), 0.0487607 secs] [Times: user=0.05 sys=0.00, real=0.05 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.756: [CMS-concurrent-sweep-start]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;...&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.927: [CMS-concurrent-sweep:0.116/0.171 secs] &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #00b050; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;[Times:user=0.23 sys=0.02, real=0.17 secs]&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.927: [CMS-concurrent-reset-start]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;14.953: [CMS-concurrent-reset:0.026/0.026 secs] &lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #00b050; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;[Times:user=0.05 sys=0.00, real=0.03 secs]&lt;/span&gt;&lt;/b&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Times marked with &lt;span style="color: #00b050;"&gt;green&lt;/span&gt;are times of concurrent phases – CMS do its work in parallel withapplication. You can find out more about CMS pauses &lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots_02.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;h5&gt;CMS failure and fallback to mark-sweep-compact&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;557.079: [GC 557.079: [DefNew557.097:[CMS-concurrent-abortable-preclean: 0.010/0.109 secs] [Times: user=0.12sys=0.00, real=0.11 secs] &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;&amp;nbsp;(promotion failed) :130817K-&amp;gt;130813K(138240K), 0.1401674 secs]557.219: [CMS (concurrent modefailure): 731771K-&amp;gt;584338K(768000K), 2.4659665 secs]858916K-&amp;gt;584338K(906240K), [CMS Perm : 1841K-&amp;gt;1835K(12288K)], 2.6065527secs] [Times: user=2.48 sys=0.03, real=2.61 secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;You can read more about failures &lt;a href="http://aragozin.blogspot.com/2011/10/java-cg-hotspots-cms-and-heap.html"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;h4&gt;CMS incremental mode&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch: &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+CMSIncrementalMode&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;CMS is using one of more back ground threads to do GC inparallel with application. These thread will compete with application threadsfor CPU cores. Incremental mode is limiting amount of CPU time consumed by backgroundGC &amp;nbsp;thread. This helps to improveapplication responsiveness if you have just 1 or 2 physical cores. Of cause oldspace collection cycles would be longer and risk of full collection fall backhigher. &lt;/div&gt;&lt;h4&gt;G1 garbage collector&lt;/h4&gt;&lt;div class="MsoNormal"&gt;JVM switch: &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+UseG1GC&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;G1 (garbage first) is a new garbage collection mode inHotSpot JVM. It was introduced in late versions of JDK6. G1 is low pausecollector implementing&amp;nbsp; incrementalversion of mark-sweep-compact algorithm. G1 breaks heap into regions of fixedsize and can collects only subset (partial collection) of them during stop-the-world(STW) pause (unlike CMS, G1 have to do most of its work during STW).Incremental approach allow G1 to employ larger number of shorter pauses insteadof fewer number longer JVM freeze (cumulative amount of pauses will still bemuch higher compared to concurrent collector like CMS) . To be accurate, G1 alsoemploys background threads to do heap marking concurrently with application (similarto CMS), but most of work is still done during STW.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&amp;nbsp;G1 is using copycollection algorithm for its partial collections. Thus each collection producesseveral completely empty regions which can be returned to OS.&lt;/div&gt;&lt;div class="MsoNormal"&gt;G1 is also exploiting generational principle. Set of regionsis considered young space and treated accordingly. &lt;/div&gt;&lt;div class="MsoNormal"&gt;G1 has a lot of hype as a garbage collection silver bullet, butI'm personally quite skeptical about it. Here are few reasons:&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;G1 have to maintain few additional data structures to makepartial GC possible, it taxes performance.&lt;/li&gt;&lt;li&gt;It is still doing most of heavy lifting during STW pauseunlike CMS which is mostly concurrent. That IMHO will hinder G1's ability toscale as well as CMS with growing heap sizes.&lt;/li&gt;&lt;li&gt;Large objects (comparable to region size) are problematicfor G1 (due to fragmentation).&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;G1 collections in logs:&lt;/div&gt;&lt;h5&gt;G1 young collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;[GC pause (young), 0.00176242 secs]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [Parallel Time:&amp;nbsp;&amp;nbsp; 1.6 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GC Worker Start Time (ms):&amp;nbsp; 15751.4&amp;nbsp;15751.4]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Update RS (ms):&amp;nbsp; 0.1&amp;nbsp; 0.3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.2, Min:&amp;nbsp;&amp;nbsp;0.1, Max:&amp;nbsp;&amp;nbsp; 0.3]&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Processed Buffers : 2 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum: 3, Avg: 1, Min: 1, Max: 2]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Ext Root Scanning (ms):&amp;nbsp; 1.0&amp;nbsp;0.9&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.9, Min:&amp;nbsp;&amp;nbsp;0.9, Max:&amp;nbsp;&amp;nbsp; 1.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Mark Stack Scanning (ms):&amp;nbsp; 0.0&amp;nbsp;0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Scan RS (ms):&amp;nbsp; 0.0&amp;nbsp;0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Object Copy (ms):&amp;nbsp; 0.3&amp;nbsp;0.3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.3, Min:&amp;nbsp;&amp;nbsp;0.3, Max:&amp;nbsp;&amp;nbsp; 0.3]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;[Termination (ms):&amp;nbsp; 0.0&amp;nbsp;0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Termination Attempts : 1 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum: 2, Avg: 1, Min: 1, Max: 1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GC Worker End Time (ms):&amp;nbsp; 15752.9&amp;nbsp;15752.9]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;[Other:&amp;nbsp;&amp;nbsp;0.1 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [Clear CT:&amp;nbsp;&amp;nbsp; 0.0 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [Other:&amp;nbsp;&amp;nbsp; 0.1 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Choose CSet:&amp;nbsp;&amp;nbsp; 0.0 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [ 18M-&amp;gt;12M(26M)]&lt;br /&gt;&amp;nbsp;[Times: user=0.00 sys=0.02, real=0.00secs] &amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;G1 partial collection&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;[GC pause (partial), 0.01589707 secs]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [Parallel Time:&amp;nbsp; 15.6 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GC Worker Start Time (ms):&amp;nbsp; 15774.1&amp;nbsp;15774.2]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Update RS (ms):&amp;nbsp; 0.0&amp;nbsp; 0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.0]&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Processed Buffers : 0 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum: 3, Avg: 1, Min: 0, Max: 3]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Ext Root Scanning (ms):&amp;nbsp; 1.0&amp;nbsp;0.7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.8, Min:&amp;nbsp;&amp;nbsp;0.7, Max:&amp;nbsp;&amp;nbsp; 1.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Mark Stack Scanning (ms):&amp;nbsp; 0.0&amp;nbsp;0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Scan RS (ms):&amp;nbsp; 0.0&amp;nbsp;0.1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;[Object Copy (ms):&amp;nbsp; 14.3&amp;nbsp;14.5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp; 14.4, Min:&amp;nbsp;14.3, Max:&amp;nbsp; 14.5]&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;[Termination (ms):&amp;nbsp; 0.0&amp;nbsp;0.0&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Avg:&amp;nbsp;&amp;nbsp; 0.0, Min:&amp;nbsp;&amp;nbsp;0.0, Max:&amp;nbsp;&amp;nbsp; 0.0]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Termination Attempts : 3 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sum: 6, Avg: 3, Min: 3, Max: 3]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [GC Worker End Time (ms):&amp;nbsp; 15789.5&amp;nbsp;15789.5]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Other:&amp;nbsp;&amp;nbsp; 0.4 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [Clear CT:&amp;nbsp;&amp;nbsp; 0.0 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [Other:&amp;nbsp;&amp;nbsp; 0.2 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Choose CSet:&amp;nbsp;&amp;nbsp; 0.0 ms]&lt;br /&gt;&amp;nbsp;&amp;nbsp; [ 13M-&amp;gt;12M(26M)]&lt;br /&gt;&amp;nbsp;[Times: user=0.03 sys=0.00, real=0.02secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h5&gt;G1 full collection (incremental mode failure)&lt;/h5&gt;&lt;div style="background: #D9D9D9; border: solid #0F243E 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #D9D9D9; border: none; mso-background-themecolor: background1; mso-background-themeshade: 217; mso-border-alt: solid #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0f243e; font-family: &amp;quot;Courier New&amp;quot;; font-size: 8pt; line-height: 115%;"&gt;32.940: [Full GC 772M-&amp;gt;578M(900M),1.9597901 secs]&lt;br /&gt;&amp;nbsp;[Times: user=2.29 sys=0.08, real=1.96secs]&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Train GC&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Train GC was removed from HotSpot JVM long time ago. But dueto most articles about GC are fairly out dated you may find references to itsometimes. It is gone, period.&lt;/div&gt;&lt;h4&gt;Permanent space&lt;/h4&gt;&lt;div class="MsoNormal"&gt;In case you are wondering. Permanent space is a part of oldspace use by JVM for internal data structures (mostly related to class loadingand JIT). Permanent space is not necessary cleaned on every old space collectioniteration and sometimes you may need to use additional switches to make JVMcollect unused data in PermGen. Normally data in permanent space are, well ...,immortal, &amp;nbsp;but ability of JVM to unloadclasses makes things complicated. &lt;/div&gt;&lt;h4&gt;More reading&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Intent of this article was to give you an introduction togarbage collection in HotSpot JVM. Other my article on topic I would recomend:&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;a href="http://java.dzone.com/articles/jrockit-gc-action"&gt;JRockitGC in action&lt;/a&gt; - similar overview of JRockit JVM&lt;/li&gt;&lt;li&gt;&lt;a href="http://aragozin.blogspot.com/2011/09/hotspot-jvm-garbage-collection-options.html"&gt;HotSpotJVM garbage collection options cheat sheet (v2)&lt;/a&gt; - exhaustive list of GC relatedHotSpot JVM switches&lt;/li&gt;&lt;li&gt;&lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html"&gt;UnderstandingGC pauses in JVM, HotSpot's minor GC&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots_02.html"&gt;UnderstandingGC pauses in JVM, HotSpot's CMS collector&lt;/a&gt; - CMS is details&lt;/li&gt;&lt;li&gt;&lt;a href="http://aragozin.blogspot.com/2011/10/java-cg-hotspots-cms-and-heap.html"&gt;JavaGC, HotSpot's CMS and heap fragmentation&lt;/a&gt; - CMS is details&lt;/li&gt;&lt;li&gt;&lt;a href="http://aragozin.blogspot.com/2011/11/java-gc-hotspots-cms-promotion-buffers.html"&gt;JavaGC, HotSpot's CMS promotion buffers&lt;/a&gt; - CMS is details&lt;/li&gt;&lt;li&gt;&lt;a href="http://aragozin.blogspot.com/2011/07/gc-check-list-for-data-grid-nodes.html"&gt;GCchecklist for data grid nodes&lt;/a&gt; - partical CMS configuration checklist.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;script type="text/javascript"&gt;var dzone_url = 'http://aragozin.blogspot.com/2011/12/garbage-collection-in-hotspot-jvm.html';&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_title = 'Garbage collection in HotSpot JVM';&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_style = '2';&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-5833783123779307623?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/5833783123779307623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/12/garbage-collection-in-hotspot-jvm.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/5833783123779307623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/5833783123779307623'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/12/garbage-collection-in-hotspot-jvm.html' title='Garbage collection in HotSpot JVM'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-2981193339592087223</id><published>2011-11-21T06:03:00.001Z</published><updated>2011-12-20T11:29:02.342Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucene'/><title type='text'>Using co-segments to dynamically adapt Lucene for frequent queries</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;div class="MsoNormal"&gt;Apache Lucene is magnificent library for working withinverted indexes. While full text search is its primary use case, you may oftenfind application of Lucene in other areas too. In particular, in data mining,it can be useful for categorizing large volumes of textual information (thinkabout finding trends in news feeds). Data mining is traditional domain formap/reduce style of distributed processing, but it you want to mine datainteractively,&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;changing rules on fly,map/reduce is not an option. Inverted indexes are more suited for interactiveuse case and Lucene is excellent in that role.&lt;/div&gt;&lt;h4&gt;Query complexity problem&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Typically "patterns" to be mined (e.g. positivewords about certain movie or description matching certain camera model) arerepresented by fairly complex Lucene queries having large numbers ofsubqueries.&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;Another problem is having termswith low selectivity in index which may be participate as a part of complex pattern&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;(for full text search you usually canjust drop them out of index).&lt;/div&gt;&lt;div class="MsoNormal"&gt;These two factors make mining job very hungry for CPU.&lt;/div&gt;&lt;h4&gt;Reducing CPU load by adding "synthetic" terms and query rewriting&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Different patterns usually share a lot of common subqueries.These subqueries themselves may be quite computation expensive (e.g. phrase andspan queries). Instead of evaluating each subquery each time for any patternquery, it is possible to precalculate them. First, "synthetic" terms,are added to index (I call them &lt;i style="mso-bidi-font-style: normal;"&gt;hints&lt;/i&gt;for short). These &lt;i style="mso-bidi-font-style: normal;"&gt;hints&lt;/i&gt; markdocuments matching particular subquery. Then all queries to be executed shouldbe rewritten with "synthetic" terms (&lt;i style="mso-bidi-font-style: normal;"&gt;hints&lt;/i&gt;) to let Lucene use that additional information.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Such optimization may increase query throughput per CPU bysubstantial factor. In my practice, for complex queries, CPU utilization can bereduced down by 3-10 times.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Though applying this technique not so easy. There fewproblems to be solved:&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;matching documents against set of queries togenerate synthetic terms,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;adding synthetic terms to existing index,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;rewrite queries to benefit from precalculatedinformation.&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;All of them are tricky. Normally to add new attribute todocument you have to rebuild whole Lucene index &lt;span style="mso-bidi-font-family: Calibri;"&gt;–&lt;/span&gt; which is heavy and resource intensive task. This is a very badsolution. It is critical to add new subqueries interactively along with usersexploring new patterns. Using this technique does not make sense if additionalsynthetic terms cannot be added to index relatively cheaply on the fly.&lt;/div&gt;&lt;h4&gt;Generating co-segment&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Straight forward approach to generate co-segment for anumber of &lt;i style="mso-bidi-font-style: normal;"&gt;subquery terms&lt;/i&gt; would be -testing these subquery for each document in index. Lucene has &lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;&lt;a href="http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/index/memory/MemoryIndex.html"&gt;&lt;span style="color: #548dd4;"&gt;MemoryIndex&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; which is quitehandy for that. It allows to create single-document index in memory and testany queries against it. So far so good, but then you realize that you have toload and parse each of documents, it turns out to be prohibitively slow (just2-5 times faster, than rebuild whole index).&lt;/div&gt;&lt;div class="MsoNormal"&gt;There is a much, much better way. We may query main index,get all document ID matching subquery and encode this information intoco-segement.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Querying index is blazing fast (compared to scanning&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;through documents).&lt;/div&gt;&lt;h4&gt;Adding co-segments to existing index&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Lucene index organized into segments, which are stored infile system. Each specific group of files (segment) is an inverted index forsubset of documents. Whole index may be divided into several segments. Inverted- means data in file is sorted by terms. This means that if all our syntheticterm would be "greater" than normal terms, we could just append themat end of existing index file (instead of rebuilding whole file).&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;After second though, we do not need to doanything with real files at all. Making Lucene think that there are few moreterms in segment is enough (read - implement own &lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;&lt;a href="http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/store/Directory.html"&gt;&lt;span style="color: #548dd4;"&gt;Directory&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; merging databehind scenes making Lucene to "see" segment + all co-segments assingle file).&lt;span style="background: yellow; mso-highlight: yellow;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="background: yellow; mso-highlight: yellow;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;h4&gt;Rewriting queries&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Once we have "synthetic" terms or &lt;i style="mso-bidi-font-style: normal;"&gt;hints&lt;/i&gt; in index, we have to rewrite querysomehow. Queries can be very sophisticated (and they are, otherwise we wouldn'tneed all these tricks).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Simple idea is just to add &lt;i style="mso-bidi-font-style: normal;"&gt;hint clause&lt;/i&gt; and additional top level MUST condition. E.g. query &lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Q&lt;/span&gt;&lt;/i&gt;will be written to &lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;H &amp;amp; Q&lt;/span&gt;&lt;/i&gt;, there &lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;H&lt;/span&gt;&lt;/i&gt;is condition for "synthetic" terms. This way we do not need to careof internal &lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;Q&lt;/span&gt;&lt;/i&gt; of and ensure correctness of rewrite.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Unfortunately, using &lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;&lt;a href="http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/search/BooleanQuery.html"&gt;&lt;span style="color: #548dd4;"&gt;BooleanQuery&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; to joinoriginal query with hint clause will not produce any speed improvements. Actuallythe way queries are executed in Lucene is making whole idea of"hinting" very non-trivial for implementation.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Solution was writing own &lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;HintAwareQuery&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;to wrap around "pattern" query (vanilla Lucene query). This wrapperdo all dirty work. First it analyzes existing hints and chooses ones to beused. Second, it optimizes execution of nested query making parts of searchindex, masked-out by chosen set of &lt;i style="mso-bidi-font-style: normal;"&gt;hints&lt;/i&gt;,"invisible" to query execution.&lt;/div&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;div class="MsoNormal"&gt;So, what was achieved?&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Hints can be added/removed to "live"index in matter of seconds,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;/span&gt;&lt;/span&gt;Transparent from application- just wrapeverything into &lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;HintAwareQuery&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"&gt;&lt;span style="mso-list: Ignore;"&gt;&lt;span style="font: 7.0pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;Order of magnitude speed up for complex queries.&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal"&gt;Thanks to Lucene flexibility, which made such optimizationever possible!&lt;/div&gt;&lt;h4&gt;More ideas&lt;/h4&gt;&lt;div class="MsoNormal"&gt;So far, hints are created manually using requests statisticsfrom application search service. Interesting idea would be to automate thisprocess, let search service itself profile requests and create &lt;i style="mso-bidi-font-style: normal;"&gt;hints&lt;/i&gt; using own statistics.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Another idea is using index masking technique for optimizingqueries without hints - e.g. if MUST clauses of top level &lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;&lt;a href="http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/search/BooleanQuery.html"&gt;&lt;span style="color: #548dd4;"&gt;BooleanQuery&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; could be usedinstead of "synthetic" hints if they are simple enough (e.g. assimple as &lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;&lt;a href="http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/search/TermQuery.html"&gt;&lt;span style="color: #548dd4;"&gt;TermQuery&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;). Such trick couldbring comparable bust for vanilla&lt;span style="mso-spacerun: yes;"&gt;&amp;nbsp; &lt;/span&gt;&lt;span class="MsoHyperlink"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #548dd4; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;"&gt;&lt;a href="http://lucene.apache.org/java/3_4_0/api/all/org/apache/lucene/search/BooleanQuery.html"&gt;&lt;span style="color: #548dd4;"&gt;BooleanQuery&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt; without anyneed of precalculation at all.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-2981193339592087223?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/2981193339592087223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/11/using-co-segments-to-dynamically-adap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/2981193339592087223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/2981193339592087223'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/11/using-co-segments-to-dynamically-adap.html' title='Using co-segments to dynamically adapt Lucene for frequent queries'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-7877399697579174895</id><published>2011-11-04T15:53:00.017Z</published><updated>2011-11-10T20:24:31.744Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Coherence'/><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>Coherence SIG: Advanced usage of indexes</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Another my presentation Coherence SIG, this time from London.&lt;br /&gt;Main theme of presentation was internal mechanics of indexes in Coherence. How indexes are stored, how queries are executed, how create custom filters and indexes - all these topics were covered.&lt;br /&gt;&lt;br/&gt;&lt;script src="http://speakerdeck.com/embed/4eb8c065f35df4017c002fd7.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-7877399697579174895?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/7877399697579174895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/11/coherence-sig-advanced-usage-of-indexes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/7877399697579174895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/7877399697579174895'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/11/coherence-sig-advanced-usage-of-indexes.html' title='Coherence SIG: Advanced usage of indexes'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-9167909914145015699</id><published>2011-11-02T03:40:00.002Z</published><updated>2011-11-02T20:42:39.226Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><title type='text'>Java GC, HotSpot's CMS promotion buffers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://aragozin.blogspot.com/2011/10/java-cg-hotspots-cms-and-heap.html"&gt;Recently&lt;/a&gt;, I have unfairly blamed promotion local allocation buffers (PLAB) forfragmentation of old space using concurrent mark sweep garbage collector. I wasvery wrong. In this article, I'm going to explain how PLABs really work withall details.&lt;/div&gt;&lt;h4&gt;PLABs&lt;/h4&gt;&lt;div class="MsoNormal"&gt;PLAB stand for promotion local allocation buffer. PLABs areused during &lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html"&gt;youngcollection&lt;/a&gt;. Young collection in CMS (and all other garbage collectors inHotSpot JVM) is a stop-the-world copy collection. CMS may use multiple threadsfor young collection, each of these threads may need to allocate space forobjects being copied either in survivor or old space. PLABs are required toavoid competition of threads for shared data structures managing free memory. Eachthread have one PLAB for survival space and one for old space. Free memory insurvivor space are continuous, so do survivor PLABs, which are simply continuousblocks. On other hand, free memory in old space (using CMS collector) isfragmented and managed via sophisticated dictionary or free chunks ...&lt;/div&gt;&lt;h4&gt;Free list space(FLS)&lt;/h4&gt;&lt;div class="MsoNormal"&gt;CMS collector cannot compact old space (actually it can, butcompaction involves long stop-the-world pause, often referred as GC freeze). Memorymanager operates with lists of free chunks to manage fragmented free space. Asa counter measure from fragmentation, chunks of free space are grouped by size.В&amp;nbsp; If available, free chunk of exact requiredsize will be used to serve allocation request. If chunks of given size areexhausted, memory manager will split larger chunk into several smaller tosatisfy demand. Consecutive free chunk can also be coalesced to create largerones (coalescence is made along with sweeping during concurrent GC cycle). Thissplitting/coalesce logic is controlled by complex heuristics and chunk demandper size statistics.&lt;/div&gt;&lt;h4&gt;Old space PLABs&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Naturally old space PLABs mimic structure of indexed freelist space. Each thread preallocates certain number of chunk of each size below257 heap words (large chunk allocated from global space). Number of chunks ofeach size to be preallocated is controlled by statistics. Following JVM flagwill enabled verbose reporting of old space PLAB sizing (too verbose forproduction though).&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-border-alt: dash-small-gap #1F497D .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+PrintOldPLAB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;At the beginning of each young collection we will seefollowing lines in GC log&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-border-alt: dash-small-gap #1F497D .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;6.347: [ParNew ...&lt;br /&gt;...&lt;br /&gt;0[10]: 722/5239/897&lt;br /&gt;0[12]: 846/5922/987&lt;br /&gt;0[14]: 666/5100/850&lt;br /&gt;...&lt;br /&gt;1[12]: 229/3296/987&lt;br /&gt;1[14]: 2/2621/850&lt;br /&gt;1[16]: 69/1812/564&lt;br /&gt;1[18]: 247/1160/290&lt;br /&gt;...&lt;br /&gt;[10]: 905&lt;br /&gt;[12]: 1002&lt;br /&gt;[14]: 865&lt;br /&gt;[16]: 567&lt;br /&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;First lines are statistics from each scavenger (young collector) threadin following format:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-border-alt: dash-small-gap #1F497D .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;tid&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;[&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;chunk size&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;]: &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;num_retire&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;/&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;num_blocks&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;/&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;blocks_to_claim&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;tid&lt;/span&gt;&lt;/b&gt; - GC thread ID,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;chunk size&lt;/span&gt;&lt;/b&gt; - chunk size in heap words,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;num_retire&lt;/span&gt;&lt;/b&gt; - number of free chunks in PLAB at the end of young GC,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;num_blocks&lt;/span&gt;&lt;/b&gt; - number of chunks allocated from FLS to PLABduring young GC,&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;blocks_to_claim&lt;/span&gt;&lt;/b&gt; - desired number of blocks to refill PLAB.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Next few lines show estimated number of chunks (per size) to bepreallocated (per GC thread) at beginning of next young collection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-border-alt: dash-small-gap #1F497D .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;[&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;chunk size&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;]: &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #0000cc; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;lt;blocks_to_claim&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;Calculatingdesired block to claim&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;&lt;div class="MsoNormal"&gt;Initial number of blocks (chunks) per chunk size is configured via &lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+CMSParPromoteBlocksToClaim&lt;/span&gt; JVM command line option(&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+OldPLABSize&lt;/span&gt; is alias for thisoption if CMS GC is used). If resizing of old PLAB is not disabled by &lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:-ResizeOldPLAB&lt;/span&gt;option, thendesired PLAB size will be adjusted after each young GC.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Ideal desired number per chunk size is calculated by following formula:&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;block_to_claim&lt;sub&gt;ideal&lt;/sub&gt; = MIN(&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABMax&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;, MAX(&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABMin&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;, num_blocks / (&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:ParallelGCThreads&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: EN-US; mso-fareast-font-family: Batang; mso-fareast-language: EN-US;"&gt;•&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABNumRefills&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;)))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;,but effective value is exponentially smoothed over time&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;blocks_to_claim&lt;sub&gt;next&lt;/sub&gt; = (1 &lt;/span&gt;&lt;/i&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: EN-US; mso-fareast-font-family: Batang; mso-fareast-language: EN-US;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;-&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; w) &lt;/span&gt;&lt;/i&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: EN-US; mso-fareast-font-family: Batang; mso-fareast-language: EN-US;"&gt;•&lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; blocks_to_claim&lt;sub&gt;prev&lt;/sub&gt;+ w &lt;/span&gt;&lt;/i&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Arial&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: EN-US; mso-fareast-font-family: Batang; mso-fareast-language: EN-US;"&gt;•&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt; block_to_claim&lt;sub&gt;ideal&lt;/sub&gt;&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;,there &lt;i style="mso-bidi-font-style: normal;"&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;;"&gt;w&lt;/span&gt;&lt;/i&gt; is configured via &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:OldPLABWeight&lt;/span&gt; (0.5 by default).&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;&lt;h4&gt;On-the-flyPLAB resizing&lt;o:p&gt;&lt;/o:p&gt;&lt;/h4&gt;&lt;div class="MsoNormal"&gt;During young collection, if chunk list of certain size will getexhausted, thread will refill it from global free space pool (allocating samenumber of chunks as at the beginning of collection). Normally thread will have torefill chunk list few times during collection (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABNumRefills&lt;/span&gt;sets desired number of refills). Though, if initial estimate was too small, GCthread will refill its chunk list too often (refill requires global lock formemory managed, so it may be slow). If on-the-fly PLAB resizing is enabled JVMwill try to detect such conditions as resize PLAB in the middle of youngcollection.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+CMSOldPLABResizeQuicker&lt;/span&gt;will enable on-the-fly PLAB resizing (disabled by default).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Few more options offer additional tuning:&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABToleranceFactor=4&lt;/span&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Batang; mso-fareast-language: KO;"&gt;–&lt;/span&gt;tolerance of the phase-change detector for on-the-fly PLAB resizing during ascavenge.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABReactivityFactor=2&lt;/span&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Batang; mso-fareast-language: KO;"&gt;–&lt;/span&gt;gain in the feedback loop for on-the-fly PLAB resizing В&amp;nbsp;during a scavenge.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSOldPLABReactivityCeiling=10&lt;/span&gt; &lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:WordDocument&gt;  &lt;w:View&gt;Normal&lt;/w:View&gt;  &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;  &lt;w:TrackMoves/&gt;  &lt;w:TrackFormatting/&gt;  &lt;w:PunctuationKerning/&gt;  &lt;w:ValidateAgainstSchemas/&gt;  &lt;w:SaveIfXMLInvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;  &lt;w:IgnoreMixedContent&gt;false&lt;/w:IgnoreMixedContent&gt;  &lt;w:AlwaysShowPlaceholderText&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;  &lt;w:DoNotPromoteQF/&gt;  &lt;w:LidThemeOther&gt;EN-US&lt;/w:LidThemeOther&gt;  &lt;w:LidThemeAsian&gt;KO&lt;/w:LidThemeAsian&gt;  &lt;w:LidThemeComplexScript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;  &lt;w:Compatibility&gt;   &lt;w:BreakWrappedTables/&gt;   &lt;w:SnapToGridInCell/&gt;   &lt;w:WrapTextWithPunct/&gt;   &lt;w:UseAsianBreakRules/&gt;   &lt;w:DontGrowAutofit/&gt;   &lt;w:SplitPgBreakAndParaMark/&gt;   &lt;w:DontVertAlignCellWithSp/&gt;   &lt;w:DontBreakConstrainedForcedTables/&gt;   &lt;w:DontVertAlignInTxbx/&gt;   &lt;w:Word11KerningPairs/&gt;   &lt;w:CachedColBalance/&gt;   &lt;w:UseFELayout/&gt;  &lt;/w:Compatibility&gt;  &lt;w:BrowserLevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;m:mathPr&gt;   &lt;m:mathFont m:val="Cambria Math"/&gt;   &lt;m:brkBin m:val="before"/&gt;   &lt;m:brkBinSub m:val="&amp;#45;-"/&gt;   &lt;m:smallFrac m:val="off"/&gt;   &lt;m:dispDef/&gt;   &lt;m:lMargin m:val="0"/&gt;   &lt;m:rMargin m:val="0"/&gt;   &lt;m:defJc m:val="centerGroup"/&gt;   &lt;m:wrapIndent m:val="1440"/&gt;   &lt;m:intLim m:val="subSup"/&gt;   &lt;m:naryLim m:val="undOvr"/&gt;  &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt; &lt;w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"  DefSemiHidden="true" DefQFormat="false" DefPriority="99"  LatentStyleCount="267"&gt;  &lt;w:LsdException Locked="false" Priority="0" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Normal"/&gt;  &lt;w:LsdException Locked="false" Priority="9" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/&gt;  &lt;w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 1"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 2"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 3"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 4"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 5"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 6"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 7"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 8"/&gt;  &lt;w:LsdException Locked="false" Priority="39" Name="toc 9"/&gt;  &lt;w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/&gt;  &lt;w:LsdException Locked="false" Priority="10" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Title"/&gt;  &lt;w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/&gt;  &lt;w:LsdException Locked="false" Priority="11" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/&gt;  &lt;w:LsdException Locked="false" Priority="22" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Strong"/&gt;  &lt;w:LsdException Locked="false" Priority="20" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="59" SemiHidden="false"   UnhideWhenUsed="false" Name="Table Grid"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/&gt;  &lt;w:LsdException Locked="false" Priority="1" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/&gt;  &lt;w:LsdException Locked="false" Priority="34" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/&gt;  &lt;w:LsdException Locked="false" Priority="29" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="30" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/&gt;  &lt;w:LsdException Locked="false" Priority="60" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="61" SemiHidden="false"   UnhideWhenUsed="false" Name="Light List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="62" SemiHidden="false"   UnhideWhenUsed="false" Name="Light Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="63" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="64" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="65" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="66" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="67" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="68" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="69" SemiHidden="false"   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="70" SemiHidden="false"   UnhideWhenUsed="false" Name="Dark List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="71" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="72" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful List Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="73" SemiHidden="false"   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/&gt;  &lt;w:LsdException Locked="false" Priority="19" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="21" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/&gt;  &lt;w:LsdException Locked="false" Priority="31" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="32" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/&gt;  &lt;w:LsdException Locked="false" Priority="33" SemiHidden="false"   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/&gt;  &lt;w:LsdException Locked="false" Priority="37" Name="Bibliography"/&gt;  &lt;w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/&gt; &lt;/w:LatentStyles&gt;&lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt;&lt;style&gt; /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman";}&lt;/style&gt;&lt;![endif]--&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Batang; mso-fareast-language: KO;"&gt;–&lt;/span&gt;clamping of the gain in the feedback loop for on-the-fly PLAB resizing during ascavenge.&lt;/div&gt;&lt;h4&gt;Conclusion&lt;/h4&gt;&lt;div class="MsoNormal"&gt;I have spent some time digging though OpenJDK code to makesure, that I'm getting that thing now. It was educating. This article hasbrought up and explained few more arcane JVM options,В&amp;nbsp; though I doubt that I will ever use them inpractice. Problem with heap fragmentation is that you have to run applicationfor really long time before fragmentation will manifest itself. Most of optionsabove require trial and error path (even though &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+PrintOldPLAB&lt;/span&gt;might give you some insights about your application) . It much easier just togive damn JVM little more memory (hey, RAM is cheap nowadays) than spend daytuning arcane options. &lt;/div&gt;&lt;div class="MsoNormal"&gt;Anyway, I hope it was as education for you as it was for me.&lt;/div&gt;&lt;h4&gt;See also&lt;/h4&gt;&lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1;"&gt;&lt;a href="http://aragozin.blogspot.com/2011/10/java-cg-hotspots-cms-and-heap.html"&gt;Java     GC, HotSpot's CMS and heap fragmentation&lt;/a&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1;"&gt;&lt;a href="http://aragozin.blogspot.com/2011/10/cms-heap-fragmentation-follow-up-1.html"&gt;CMS     heap fragmentation. Follow up 1&lt;/a&gt;&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1;"&gt;&lt;a href="http://aragozin.blogspot.com/p/garbage-collection.html"&gt;Other articlesabout garbage collection in this blog&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-9167909914145015699?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/9167909914145015699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/11/java-gc-hotspots-cms-promotion-buffers.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/9167909914145015699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/9167909914145015699'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/11/java-gc-hotspots-cms-promotion-buffers.html' title='Java GC, HotSpot&apos;s CMS promotion buffers'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-2993353349186583038</id><published>2011-10-31T19:40:00.002Z</published><updated>2011-10-31T19:47:16.820Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='data structures'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='grid patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='data grid'/><title type='text'>Data Grid Pattern - Time series index for managing versioned data</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div&gt;&lt;div class="MsoNormal"&gt;Many critical application are using append only approach for dealing with transactional data. In other words, they never update data records, but instead insert new records with greater timestamp (or sequence number, or any other kind of version, they are using to find latest record). Common challenge for such data model, is how to retrieve an appropriate version of record (e.g. latest version, or version at certain moment in time). A simple query for latest version for key 'A' would translate into query as complex as&lt;/div&gt;&lt;div style="background: #DAEEF3; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D 1.0pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DAEEF3; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-border-alt: dash-small-gap #1F497D 1.0pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;select&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;*&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;from&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; versions &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;where&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; series&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;'A'&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;and&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; version &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;select&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;max&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;version&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;from&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; versions &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;where&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;key&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;'A'&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;,&amp;quot;serif&amp;quot;; font-size: 12pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;This query is already too complex for data grid (and even RDBMS would not be too happy).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Accidently Ben Stopford has recently published a great article about this problem, outlining a lot of important aspects. I do not want to repeat him here, I suggest you read &lt;a href="http://www.benstopford.com/2011/10/19/coherence-implementation-pattern-latestversioned-caches/"&gt;his article&lt;/a&gt; now, then continue with mine, which complements his two approaches this third one using custom index in Coherence.&lt;/div&gt;&lt;h2&gt;Using custom index for accessing versioned data&lt;/h2&gt;&lt;div class="MsoNormal"&gt;In this&amp;nbsp; approach, each version is stored as a separate entry in cache. &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mJ451iw15Cs/Tq74x0ARppI/AAAAAAAAKME/hAyOfYivt_c/s1600/blog-17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="153" src="http://1.bp.blogspot.com/-mJ451iw15Cs/Tq74x0ARppI/AAAAAAAAKME/hAyOfYivt_c/s400/blog-17.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;u&gt;Entry key&lt;/u&gt; is composite key, including logical key (&lt;u&gt;series key&lt;/u&gt;) and some additional field to make version key unique (e.g. transaction ID, sequence number etc). Value contains actual business data (payload) and &lt;u&gt;timestamp&lt;/u&gt;, we are using in our queries (technically timestamp could be part of composite key).&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;u&gt;Series key&lt;/u&gt; should be an affinity key also - all versions related to same series should be physically on one Coherence node (or affinity key can be a part of &lt;u&gt;series key&lt;/u&gt;, this will also satisfy this requirement).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Normally, if you want to find certain version by &lt;u&gt;series key&lt;/u&gt; and &lt;u&gt;timestamp&lt;/u&gt; you have to do aggregation of all versions for this series. In two approaches mentioned by Ben Stopford, latest version is separated from all other versions (using separate cache - approach 1, using marker - approach 2). It solves problem of finding latest version, but doesn't help if we need to find version for certain moment at time.&lt;/div&gt;&lt;h3&gt;Time series index structure&lt;/h3&gt;&lt;div class="MsoNormal"&gt;Normal Coherence indexes cannot help us much, due to complexity of query, but it is possible to create custom index, tailored specifically for this task.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Sxuzn3rXzgE/Tq741IAm2II/AAAAAAAAKMM/s-9eIPNsRyA/s1600/blog-18.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://3.bp.blogspot.com/-Sxuzn3rXzgE/Tq741IAm2II/AAAAAAAAKMM/s-9eIPNsRyA/s400/blog-18.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Time series index is similar to traditional inverted index, but instead of storing set of entry references, it is storing a nested index, indexing&amp;nbsp; only versions belonging to certain series by &lt;u&gt;timestamp&lt;/u&gt;. Using this index structure you could find latest version or version for certain moment in time, without any aggregation, just by index lookup.&lt;/div&gt;&lt;div class="MsoNormal"&gt;This index goes beyond standard index Coherence API, so it requires a complementary implementation of custom filter.&lt;/div&gt;&lt;h2&gt;PROs and CONs&lt;/h2&gt;&lt;div class="MsoNormal"&gt;Below and PROs and CONs of this approach, compared to approaches from Ben's article.&lt;/div&gt;&lt;h3&gt;PRO&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;  Inserting new version doesn't require modifications of any other versions. In particular, you do not need to use hack, directly accessing to backing map, and you do not create extra replication traffic.&lt;/li&gt;&lt;li&gt;Time series index works efficiently for any point in time, not only latest versions.&lt;/li&gt;&lt;li&gt;It can be used with any kind of caches (even with continuous queries).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;h3&gt;CON&lt;/h3&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Through custom index usage is straightforward, troubleshooting could be very tricky unless you understand index mechanics very well.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Source code&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;a href="http://code.google.com/p/gridkit/wiki/TimeSeriesIndex"&gt;Time series index implementation&lt;/a&gt; is available at &lt;a href="http://code.google.com/p/gridkit"&gt;GridKit&lt;/a&gt; project on Google code.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-2993353349186583038?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/2993353349186583038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/grid-pattern-managing-versioned-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/2993353349186583038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/2993353349186583038'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/grid-pattern-managing-versioned-data.html' title='Data Grid Pattern - Time series index for managing versioned data'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-mJ451iw15Cs/Tq74x0ARppI/AAAAAAAAKME/hAyOfYivt_c/s72-c/blog-17.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-5026156029178597374</id><published>2011-10-27T15:07:00.001+01:00</published><updated>2011-10-28T16:41:37.894+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java, How to throw undeclared checked exception</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;Usually when you have caught checked exception (e.g. &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;IOException&lt;/span&gt; or &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;Interrupted&lt;/span&gt;) you have to wrap it in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;RuntimeException&lt;/span&gt; to rethrow it without declaring exception in method signature. But with help of generic you can now easily break java rules and throw say &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;IOException&lt;/span&gt; exception from a method which has no &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;i style="mso-bidi-font-style: normal;"&gt;throws&lt;/i&gt;&lt;/b&gt; declaration.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;Code below will allow to throw anything anywhere.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div style="background: #DBE5F1; border: dashed #0F243E 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-border-themeshade: 128; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;class&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; AnyThrow &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;static&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;void&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; throwUncheked&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;Throwable e&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AnyThrow&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;.&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;RuntimeException&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;throwAny&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;e&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @SuppressWarnings&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;"unchecked"&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;private&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;static&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;lt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;E &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;extends&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; Throwable&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;void&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; throwAny&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;Throwable e&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; E &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;E&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;e&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #0F243E 1.0pt; mso-border-themecolor: text2; mso-border-themeshade: 128; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;I would say, it is very sad outcome from Java implementation of generics. While benefits from checked exception are arguable, they have provided some rules you were able rely upon. &amp;nbsp;But not any more, thanks to generics. &lt;/div&gt;&lt;div class="MsoNormal"&gt;But it is that it is :)&lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_url = 'http://aragozin.blogspot.com/2011/10/java-how-to-throw-undeclared-checked.html';&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_title = 'Java, How to throw undeclared checked exception';&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_style = '2';&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"&gt;&lt;/script&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-5026156029178597374?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/5026156029178597374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/java-how-to-throw-undeclared-checked.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/5026156029178597374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/5026156029178597374'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/java-how-to-throw-undeclared-checked.html' title='Java, How to throw undeclared checked exception'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-4810103948047029824</id><published>2011-10-25T07:54:00.001+01:00</published><updated>2011-10-25T07:55:15.144+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='grid patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='data grid'/><title type='text'>Data Grid Pattern - Proactive caching</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;Classic and most widely used approach for caching is read through pattern. Look up in cache, then try to load from primary data source if entry is missing in cache - that is how it works. This pattern is easy to implement but it has few unpleasant limitations:&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;caching may reduce average response time, but maximum response time is still bound to back end data source response time,&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;cache may have stale data, expiry policy may relive this problem to some extent, but aggressive expiry is drastically reducing performance gain from caching.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;All in memory pattern&lt;/h2&gt;&lt;div class="MsoNormal"&gt;Caching concept is close relative to &lt;a href="http://en.wikipedia.org/wiki/Memory_hierarchy"&gt;memory hierarchy principle&lt;/a&gt;. Memory hierarchy is one of cornerstones of &lt;a href="http://en.wikipedia.org/wiki/Von_Neumann_architecture"&gt;Von Neumann architecture&lt;/a&gt; relies on fact that we have different kinds (in terms of capacity and performance) of memory in system.&amp;nbsp; With modern hardware dynamic memory capacity is often large enough to keep whole dataset. All-in-memory is term used to describe caching architecture there you have 100% of your data in cache at all times. Having all data in cache allow you to guaranty that no request will have to hit slow backend data source and thus provide more aggressive SLA for max response time. It also may be required for workloads with highly random access to data, there traditional assumptions like 80/20 are not working. &lt;/div&gt;&lt;div class="MsoNormal"&gt;While all-in-memory approach is definitely win in terms of performance, its implementation has few serious challenges:&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;cache should have enough capacity to hold 100% of our data,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;/span&gt;cache should be fault tolerant (losing a portion of data in cache will render it defunct until missing data would be reloaded),&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;preloading procedure is often non-trivial due to scale of data set,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;cache should be kept in sync with backend data source.&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="margin-left: 1.85pt;"&gt;Capacity and fault tolerance are provided by modern distributed caches out of box, but preloading procedures and cache update strategy are very application specific and fairly challenging to implement.&lt;/div&gt;&lt;div class="MsoNormal" style="margin-left: 1.85pt;"&gt;Below are few practical approaches for keeping cache in synch with primary data source.&lt;/div&gt;&lt;h2&gt;Refresh ahead&lt;/h2&gt;&lt;div class="MsoNormal"&gt;This is approach similar to expiry policy, but instead of invalidating data, cache proactively refreshing them from master source. Refresh ahead pattern is quite simple, but not very practical though. If cached data set is large (and we are talking about &lt;u&gt;all&lt;/u&gt;-in-memory pattern) automatic refreshing is like to overwhelm backend with requests. And even if data set is reasonably small we still have to use fairly long expiry time to make it practical. &lt;/div&gt;&lt;div class="MsoNormal"&gt;So if you looking for all-in-memory cache, refresh ahead are unlikely to help you.&lt;/div&gt;&lt;h2&gt;Proactive caching&lt;/h2&gt;&lt;div class="MsoNormal"&gt;In contrast with traditional (I would say reactive) caching, with proactive caching pattern you insert/update value in cache as soon as it is updated in backend data source, not at the moment data was requested from cache.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-6xh9svhFFuU/TqZcGNPc3sI/AAAAAAAAKLk/UMJUek__5e0/s1600/blog-14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="182" src="http://3.bp.blogspot.com/-6xh9svhFFuU/TqZcGNPc3sI/AAAAAAAAKLk/UMJUek__5e0/s400/blog-14.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Proactive caching is not necessary should be used with all-in-memory pattern, but combination of these two is very powerful.&lt;/div&gt;&lt;h2&gt;Polling updates from DB&lt;/h2&gt;&lt;div class="MsoNormal"&gt;An evolutionary step from refresh ahead to proactive caching, would be polling changes for database. Some daemon component should periodically (and frequently) poll database and fetch changes since last cache update. Sounds simple but you have to come out with a way how to "fetch changes since last cache update". &amp;nbsp;Usually some kind of timestamp is used - each record in table to be cached has a kind of last modified field. Another few challenges:&lt;/div&gt;&lt;div class="MsoListParagraphCxSpFirst" style="mso-list: l5 level1 lfo3; text-indent: -18.0pt;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;what if cache is representing a query result, not just a single table,&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l5 level1 lfo3; text-indent: -18.0pt;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;'last modified' field should be indexed, otherwise frequent polls will bring database to its knees,&lt;/div&gt;&lt;div class="MsoListParagraphCxSpMiddle" style="mso-list: l5 level1 lfo3; text-indent: -18.0pt;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;polling daemon should be fault tolerant,&lt;/div&gt;&lt;div class="MsoListParagraphCxSpLast" style="mso-list: l5 level1 lfo3; text-indent: -18.0pt;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;cache timestamp should be stored somewhere on cache side.&lt;/div&gt;&lt;div class="MsoNormal"&gt;So, implementing this approach will require some amount of work (on both sides, database and cache), but in the end you will have very robust solution.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Only sever limitation of this approach is lag between changes in database and cache, which is no less than poll period.&lt;/div&gt;&lt;h3&gt;Long poll&lt;/h3&gt;&lt;div class="MsoNormal"&gt;If database has some means for wait/notification in its query language, you can use long poll pattern.&amp;nbsp; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ZHfdS4u_D7o/TqZcWkVtQ2I/AAAAAAAAKLs/EaQ4wbjLycQ/s1600/blog-15.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="252" src="http://3.bp.blogspot.com/-ZHfdS4u_D7o/TqZcWkVtQ2I/AAAAAAAAKLs/EaQ4wbjLycQ/s320/blog-15.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="center" class="MsoNormal" style="text-align: center;"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Using long poll will reduce load on your database server and probably reduce lag between cache and database. Disadvantages of this approach: more code on database side and need to use dedicated thread(s) for polling (because thread will be blocked waiting notification of database side for most time). &lt;/div&gt;&lt;div style="background: #FFFF99; border: solid #E36C0A 1.5pt; margin-left: 1.85pt; margin-right: 0cm; mso-border-themecolor: accent6; mso-border-themeshade: 191; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FFFF99; border: none; mso-border-alt: solid #E36C0A 1.5pt; mso-border-themecolor: accent6; mso-border-themeshade: 191; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;In Oracle database long poll could be implemented using DBMS_ALERT package. Though use of DBMS_ALERT may cause serialization of update transaction and harms database performance.&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Database notifications&lt;/h2&gt;&lt;div class="MsoNormal"&gt;Some databases can push data change notifications directly to clients, without need for polling. E.g. Oracle database has DCN (data change notification) mechanism. Using DCN you can register callbacks which would be notified that certain data have been changed in database. Notification mechanism has few advantages over polling&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;less load of database while no data is actually changing,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;smaller lag between changing data in database are reaction in cache.&lt;/li&gt;&lt;/ul&gt;&lt;div class="MsoNormal" style="margin-left: 1.85pt;"&gt;Notifications approach have disadvantages also&lt;/div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;API usually more complicated, you have to learn more quirks to make it work,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;connection hang problems - application is listening to event on connection which is defunct for some reason,&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Symbol;"&gt;&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;/span&gt;&lt;/span&gt;notifications may be lost in transition for some reason.&lt;/li&gt;&lt;/ul&gt;&lt;div style="background: #FFFF99; border: solid #E36C0A 1.5pt; margin-left: 1.85pt; margin-right: 0cm; mso-border-themecolor: accent6; mso-border-themeshade: 191; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FFFF99; border: none; mso-border-alt: solid #E36C0A 1.5pt; mso-border-themecolor: accent6; mso-border-themeshade: 191; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;One particular problem with using Oracle DCN in java, was leaking of subscriptions. DCN subscription is remaining active on database side after termination java process (unless it was deregistered explicitly) and eventually you are going to hit limit for active subscriptions. Of cause you should deregister subscription before terminating of client process, but you cannot always guaranty graceful shutdown in practice.&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Hooking into database replication&lt;/h2&gt;&lt;div class="MsoNormal"&gt;All mature databases have replication feature and thus replication wire protocol. Sometimes, they also provide API to hook into replication channel and programmatically receive all updates (essentially change notifications).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Replication is implemented differently in various databases (or even with different replication solution for same database). But general idea is to make cache act as replication slave for its source database.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Compared to polling or data change notifications, using of replication usually requires more effort from DBA side (they should setup replication slave of master database). It may also cost you some in licensing fees dependent on your replication solution.&lt;/div&gt;&lt;div style="background: #FFFF99; border: solid #E36C0A 1.5pt; mso-border-themecolor: accent6; mso-border-themeshade: 191; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FFFF99; border: none; mso-border-alt: solid #E36C0A 1.5pt; mso-border-themecolor: accent6; mso-border-themeshade: 191; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;MySQL slave protocol does not require any setup on master, so replication links can be created ad hoc. But MySQL has another catch, you should setup row based replication on master database unless you want to parse and execute SQL statements in your cache.&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;Single cache in front of multiple sources&lt;/h2&gt;&lt;div class="MsoNormal"&gt;In large scale system, primary data source may be distrusted itself&amp;nbsp; (e.g. using sharded database). Having single read through cache may be a problem in this case (doing read through, you have to know which shard to consult about data missing in cache), but with proactive caching such setup it much straightforward. While in read through caching, cache responsibilities of serving requests and acquiring data are coupled. With proactive caching, responsibilities of storing data/serving read requests and feeding cache with data updates may be separated. This way, you can have single cache instance and multiple other components pushing data into it (e.g. each sharing could push its data in single cache). &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kf2wLNlroCQ/TqZcrfVm1XI/AAAAAAAAKL0/ITEcA3gfwvo/s1600/blog-16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-kf2wLNlroCQ/TqZcrfVm1XI/AAAAAAAAKL0/ITEcA3gfwvo/s1600/blog-16.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In this role cache can be though as a kind "materialized view" based up on data in primary (potentially distributed) data source.&lt;/div&gt;&lt;h2&gt;Few more links&lt;/h2&gt;&lt;div class="MsoListParagraph" style="mso-list: l3 level1 lfo6; text-indent: -18.0pt;"&gt;&lt;span style="font-family: Symbol;"&gt;·&lt;span style="font: 7pt &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;a href="http://aragozin.blogspot.com/2011/07/coherence-sig-using-oracle-coherence-to.html"&gt;Coherence SIG: Using Oracle Coherence to Enable Database Partitioning and DC Level Fault Tolerance&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Calibri&amp;quot;,&amp;quot;sans-serif&amp;quot;; font-size: 11pt; line-height: 115%;"&gt;&lt;a href="http://theblasfrompas.blogspot.com/2010/02/using-database-change-notification-dcn.html"&gt;Using Database Change Notification (DCN) with a Coherence Cache&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-4810103948047029824?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/4810103948047029824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/grid-pattern-proactive-caching.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/4810103948047029824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/4810103948047029824'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/grid-pattern-proactive-caching.html' title='Data Grid Pattern - Proactive caching'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-6xh9svhFFuU/TqZcGNPc3sI/AAAAAAAAKLk/UMJUek__5e0/s72-c/blog-14.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-682416783282426440</id><published>2011-10-20T09:38:00.000+01:00</published><updated>2011-10-20T09:38:54.273+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><title type='text'>CMS heap fragmentation. Follow up 1</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;I have recently published an article &lt;a href="http://aragozin.blogspot.com/2011/10/java-cg-hotspots-cms-and-heap.html"&gt;Java GC, HotSpot's CMS and heap fragmentation&lt;/a&gt;. Post has lead to a number of interesting discussions and here I want to present some hard numbers from my experiments to back up these discussions.&lt;/div&gt;&lt;h1&gt;Experiment details&lt;/h1&gt;&lt;h3&gt;Application&lt;/h3&gt;&lt;div class="MsoNormal"&gt;Test application is a synthetic application. It is allocating byte arrays of random size and eventually releasing them (with fairly complex pattern). Though application is rather simple, it shows heap space fragmentation symptoms &amp;nbsp;similar to symptoms of real application. Application has 2 threads which are consuming 100% of CPU core time each. Object allocation sequence is deterministic, so I use number of young collections as time axis on diagrams.&lt;/div&gt;&lt;h3&gt;JVM settings&lt;/h3&gt;&lt;div class="MsoNormal"&gt;64bit HotSpot JVM was used in experiments. Base line configuration is below&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-border-alt: dash-small-gap #1F497D .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-server&lt;br /&gt;-Xmx1700m -Xms1700m -Xmn300m&lt;br /&gt;-XX:+PrintGCDetails&lt;br /&gt;-XX:+PrintGCTimeStamps&lt;br /&gt;-XX:+UseConcMarkSweepGC&lt;br /&gt;-XX:-UseCompressedOops&lt;br /&gt;-XX:+PrintPromotionFailure&lt;br /&gt;-XX:CMSInitiatingOccupancyFraction=30&lt;br /&gt;-XX:+UseCMSInitiatingOccupancyOnly&lt;br /&gt;-XX:ParallelGCThreads=2&lt;br /&gt;-XX:ConcGCThreads=1&lt;br /&gt;-XX:PrintFLSStatistics=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;JVM process was limited to 2 cores (using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;;"&gt;taskset&lt;/span&gt;) to simulate high CPU load (real application is consuming all cores at pick loads, but for test application I would like to stick with single thread to keep its behavior deterministic and &amp;nbsp;reproducible).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Live data set of application is about 1GiB (which leaves about 400MiB in old space as head room for CMS collector). These numbers are scaled down from real application setup.&lt;/div&gt;&lt;div class="MsoNormal"&gt;For test runs with reduced old PLAB size, following options were added to JVM&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-border-alt: dash-small-gap #1F497D .5pt; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-border-alt: dash-small-gap #1F497D .5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:OldPLABSize=16&lt;br /&gt;-XX:-ResizeOldPLAB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Diagrams&lt;/h3&gt;&lt;div class="MsoNormal"&gt;Diagrams are showing max chunk size and total amount of free memory in old space on Y axis (in heap words, heap word = 8 bytes). X axis a showing number of young collections since start of JVM.&lt;/div&gt;&lt;h1&gt;Fragmentation in different HotSpot revisions&lt;/h1&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-49mkuXb2AOo/Tp_dNKJU-nI/AAAAAAAAKK0/RrnUUUw7Lo0/s1600/blog-gc-frag-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://4.bp.blogspot.com/-49mkuXb2AOo/Tp_dNKJU-nI/AAAAAAAAKK0/RrnUUUw7Lo0/s400/blog-gc-frag-1.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://3.bp.blogspot.com/-4j8MYfb0Tds/Tp_dNofAL0I/AAAAAAAAKK8/OsXg_dLq4wo/s1600/blog-gc-frag-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://3.bp.blogspot.com/-4j8MYfb0Tds/Tp_dNofAL0I/AAAAAAAAKK8/OsXg_dLq4wo/s400/blog-gc-frag-2.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;h1&gt;&lt;/h1&gt;&lt;div class="MsoNormal"&gt;As you can see something is really broken in HotSpot 6u24. Upgrading to version of 6u25 or above should be a good idea. See &lt;a href="http://bugs.sun.com/view_bug.do?bug_id=6999988"&gt;CR-6999988&lt;/a&gt; for more details.&lt;/div&gt;&lt;div class="MsoNormal"&gt;Anyway, in both revisions, reducing old PLAB size is considerably reducing fragmentation.&lt;/div&gt;&lt;h1&gt;Adding more memory&lt;/h1&gt;&lt;div class="MsoNormal"&gt;Let's see how adding more memory to JVM will affect fragmentation. In next experiment heap size is increased by 200 MiB without increasing of live data set.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Kl4AiFlk59s/Tp_dOX6oCjI/AAAAAAAAKLE/aMdFREr0QxY/s1600/blog-gc-frag-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://4.bp.blogspot.com/-Kl4AiFlk59s/Tp_dOX6oCjI/AAAAAAAAKLE/aMdFREr0QxY/s400/blog-gc-frag-3.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-wg3vtqQocgI/Tp_dO6mXdFI/AAAAAAAAKLM/xZJsklvlKV4/s1600/blog-gc-frag-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://3.bp.blogspot.com/-wg3vtqQocgI/Tp_dO6mXdFI/AAAAAAAAKLM/xZJsklvlKV4/s400/blog-gc-frag-4.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;As you can see increasing CMS headroom drastically decreases fragmentation (though max available chunk size continues to decrease over time).&lt;/div&gt;&lt;h1&gt;Adding more CPU cores&lt;/h1&gt;&lt;div class="MsoNormal"&gt;As I said before test application consumes all available cores and concurrent GC thread have to compete for CPU cycles with application. In this test, I have increased number of cores available to JVM process to three. No other parameters of experiment have been changed.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-nwVybLs9KsM/Tp_dPRgjh1I/AAAAAAAAKLU/m3C-2Dev_wk/s1600/blog-gc-frag-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://1.bp.blogspot.com/-nwVybLs9KsM/Tp_dPRgjh1I/AAAAAAAAKLU/m3C-2Dev_wk/s400/blog-gc-frag-5.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bAeT54DyT9w/Tp_dPxT0P1I/AAAAAAAAKLc/jh_bRdXHmZ0/s1600/blog-gc-frag-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="117" src="http://3.bp.blogspot.com/-bAeT54DyT9w/Tp_dPxT0P1I/AAAAAAAAKLc/jh_bRdXHmZ0/s400/blog-gc-frag-6.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Results are little surprising. Even though average amount of free memory in lower for 3 core test vs. 2 core test , fragmentation issue goes away!&lt;/div&gt;&lt;div class="MsoNormal"&gt;In other words, if your application is starving on CPU in may lead to increased fragmentation of CMS space and eventual Full GC freeze, even though amount of free memory reported in GC logs and via JMX does not show any indication of problem.&lt;/div&gt;&lt;div class="MsoNormal"&gt;I really wish CMS free list space statistics would be exposed via JMX. Now I have to reconsider my baseline JVM health monitoring approach for production environments :)&lt;/div&gt;&lt;h1&gt;Conclusions&lt;/h1&gt;&lt;div class="MsoNormal"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;HotSpot prior to 6u25 have severe issue leading to increased fragmentation.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Increasing CMS headroom (lag between live data set and old space size) is drastically reducing fragmentation.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;CPU shortage may leading to fragmentation of memory, this problem cannot be detected by normal monitoring (only by parsing GC logs with options above).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Limiting OldPLABSize shows less fragmentation compared with default PLAB settings in all experiments (though it has negative performance impact).&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Though synthetic CMS fragmentation tests have produced some interesting data it is still just a synthetic test. Real systems are much less predictable and not so easy to test unfortunately. &lt;br /&gt;So, my main advice to everyone having to deal with GC issues - use thoughtful monitoring in your production environment.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-682416783282426440?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/682416783282426440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/cms-heap-fragmentation-follow-up-1.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/682416783282426440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/682416783282426440'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/cms-heap-fragmentation-follow-up-1.html' title='CMS heap fragmentation. Follow up 1'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-49mkuXb2AOo/Tp_dNKJU-nI/AAAAAAAAKK0/RrnUUUw7Lo0/s72-c/blog-gc-frag-1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-3022185187901519315</id><published>2011-10-12T23:04:00.008+01:00</published><updated>2011-11-02T03:52:53.984Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><title type='text'>Java GC, HotSpot's CMS and heap fragmentation</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;Concurrent Mark Sweep (CMS) is one of garbage collection algorithms implemented in HotSpot JVM. CMS is designed to be mostly concurrent, requiring just two quick stop-the-world pauses per old space garbage collection cycle. But if CMS cannot keep up with allocation of memory by application, it may fallback to stop-the-world whole heap collection - infamous Full GC pause. Full GC is very noticeable application pause, on large heaps it can take several dozens of seconds to collect and compact whole heap.&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;There are two different failure scenarios for CMS collection (both of them are leading to longer than usual stop-the-world pauses):&lt;/div&gt;&lt;ul style="margin-top: 0cm;" type="disc"&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1;"&gt;concurrent mode failure,&lt;/li&gt;&lt;li class="MsoNormal" style="mso-list: l0 level1 lfo1;"&gt;promotion failure.&lt;/li&gt;&lt;/ul&gt;&lt;h1&gt;Concurrent mode failure&lt;/h1&gt;&lt;div class="MsoNormal"&gt;At beginning&amp;nbsp; of each young GC, collector should ensure that there is enough free memory in old space to promote aged objects from young space. Modern CMS collector estimates size of objects to be promoted using statistics from previous collections. If old space does not have enough free bytes to hold estimated promotion amount, &lt;b style="mso-bidi-font-weight: normal;"&gt;concurrent mode failure&lt;/b&gt; will be raise. Concurrent mode failure doesn't necessary lead to Full GC, in certain cases JVM will just wait for concurrent collection cycle to finish, but application will remain in STW pause until young collection will be finished.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Most frequent reason for concurrent mode failure is late initiation of CMS cycle. JVM tries to estimate amount of garbage in heap and duration of CMS cycle and start it as late as possible to avoid wasting of CPU. Unfortunately this estimation may be too optimistic. You can advise JVM to start CMS earlier using following flags:&lt;span style="color: #17365d;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-border-themecolor: text2; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:CMSInitiatingOccupancyFraction=30&lt;br /&gt;-XX:+UseCMSInitiatingOccupancyOnly&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Setting above will force CMS cycle is more than 30% of old space is use. Second option disables JVM heuristics, without second parameter JVM may not obey CMS initiating occupancy fraction setting.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Normally for server type applications you would like CMS to be running continuously. If you are experiencing &lt;b style="mso-bidi-font-weight: normal;"&gt;concurrent mode failure&lt;/b&gt;, even though next CMS cycle is starting right after previous, it means that CMS throughput is just not enough. In this case you should increase size of old generation and give CMS collector more head room to do its job. Alternatively you may try to dedicate more CPU cores for concurrent collector, but CPU is usually even more limited resource on modern servers than memory.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;In summary, there are two reasons for &lt;b style="mso-bidi-font-weight: normal;"&gt;concurrent mode failure&lt;/b&gt; STW pause mentioned above, both of them can be remedied fairly easily with JVM options.&lt;/div&gt;&lt;h1&gt;Promotion failure&lt;/h1&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Promotion failure&lt;/b&gt; is more complicated situation. CMS collector is not compacting free memory in old space, instead it have to deal with fragmented free space (a set of free memory chunks). It is possible, that all free bytes are scattered though small chunks, and it is impossible to find certain amount of &lt;u&gt;continuous&lt;/u&gt; memory to promote particular large object, even though total number of &lt;u&gt;free bytes&lt;/u&gt; is large enough. &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Heap fragmentation is well known problem, and there are few effective techniques reducing fragmentation.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;CMS memory manager is using separate free lists for different size of chunks. Using these free lists, it can effectively fill small holes in fragmented memory space with objects of exact size. This technique is known to be fairly effective (and widely used in C/C++ memory managers). But, surprisingly, it doesn't seems to work well for JVM in many real live situations.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;What is wrong with a way JVM allocating memory in old space?&lt;/div&gt;&lt;h2&gt;PLABs&lt;/h2&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div style="background: #FDE9D9; border: solid #C00000 1.5pt; mso-background-themecolor: accent6; mso-background-themetint: 51; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FDE9D9; border: none; mso-background-themecolor: accent6; mso-background-themetint: 51; mso-border-alt: solid #C00000 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Update:&lt;/b&gt; According to comment below, I'm be very wrong here. Please read comment from Ramki and give me some time to grok this staff and rewrite section.&lt;br /&gt;Also take a look at next articale which have some numbers to back me up &lt;br /&gt;&lt;a href="http://aragozin.blogspot.com/2011/10/cms-heap-fragmentation-follow-up-1.html"&gt;CMS heap fragmentation. Follow up 1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update 2:&lt;/b&gt; I have written another article specifically explaining PLABs in CMS. See &lt;a href="http://aragozin.blogspot.com/2011/11/java-gc-hotspots-cms-promotion-buffers.html"&gt;Java GC, HotSpot's CMS promotion buffers &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Section below describes old PLAB logic, which is still present in code base, but not used any more.&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Let me make a step aside and explain some details of JVM memory management. You may know that JVM is using TLABs (thread local allocation block) to avoid concurrent allocation from single memory source over multiple threads. Same idea is also used for parallel young space collector. Collecting threads are copying live objects (young collection is a copy collection) and they need to allocate memory for objects being copied. To avoid CPU cache contention (due to synchronization of caches between CPUs) each thread have two, one for young space and one for old space, PLABs (parallel or promotion local allocation buffer) of its own. Using PLAB in young space is totally make sense, free memory is always continuous there, but using PLAB for old space in practice makes a huge contribution to fragmentation.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Let me illustrate this by example.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qBDgpdgvPTU/TpYNRG64CFI/AAAAAAAAKHE/o-3dOt87MMY/s1600/blog-10.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://1.bp.blogspot.com/-qBDgpdgvPTU/TpYNRG64CFI/AAAAAAAAKHE/o-3dOt87MMY/s400/blog-10.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Each collector thread is allocating chunk of continuous memory in old space. Then, during collection, these chunks are filled with objects of different size (large objects will be allocated directly in old space, but small objects will be placed in PLAB).&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-NrlireLZTzE/TpYNk7brRZI/AAAAAAAAKHM/VRnXkUVzS0E/s1600/blog-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="72" src="http://3.bp.blogspot.com/-NrlireLZTzE/TpYNk7brRZI/AAAAAAAAKHM/VRnXkUVzS0E/s320/blog-11.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div align="right" class="MsoNormal" style="text-align: right;"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Once young collection is finished, our PLABs are full with objects. Then, after some time, CMS cycle takes place and sweeper mark few dead objects as free space, creating small free memory chunks.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--_X1aoyfMXQ/TpYN-SDfkrI/AAAAAAAAKHU/Y40_6djgpNM/s1600/blog-12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="73" src="http://4.bp.blogspot.com/--_X1aoyfMXQ/TpYN-SDfkrI/AAAAAAAAKHU/Y40_6djgpNM/s320/blog-12.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;But on next young collection, instead of reusing small chunks of memory, each GC thread will allocate new large continuous block and will fill it with small objects.&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-TZSaIhmi7y0/TpYOMxlJnFI/AAAAAAAAKHc/Mz4aqg0Ykf4/s1600/blog-13.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="161" src="http://1.bp.blogspot.com/-TZSaIhmi7y0/TpYOMxlJnFI/AAAAAAAAKHc/Mz4aqg0Ykf4/s400/blog-13.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div align="right" class="MsoNormal" style="text-align: right;"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Effectively, due to using PLABs, free lists are not used for small objects and small chunks will never be reused (until JVM could coalesce them into larger chunks). In practice, in our applications, we have a lot of small objects which can live long enough to die in old space. Strings and hash map entries are just to name few such cases.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Ironically, while CMS has sophisticated free list machinery, it makes it inefficient by using PLABs.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="background: #FDE9D9; border: solid #C00000 1.5pt; mso-background-themecolor: accent6; mso-background-themetint: 51; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FDE9D9; border: none; mso-background-themecolor: accent6; mso-background-themetint: 51; mso-border-alt: solid #C00000 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Important:&lt;/b&gt; There is bug in JDK prior 6u25, which makes fragmentation even worse. See &lt;a href="http://bugs.sun.com/view_bug.do?bug_id=6999988"&gt;CR-6999988&lt;/a&gt; for more details. &lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Can we workaround this issue? &lt;/div&gt;Yes, we can reduce size of PLAB improving reuse of small chunks.&lt;br /&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-border-themecolor: text2; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:OldPLABSize=16&lt;br /&gt;-XX:-ResizeOldPLAB&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Options above will force JVM to use PLAB as small as 16 heap words (heap word = 4 bytes in 32 bit JVM or 64 bit JVM with compressed pointers enabled, 8 bytes otherwise).&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;My experiments have shown drastic reduction of heap fragmentation in few application with known &lt;b style="mso-bidi-font-weight: normal;"&gt;promotion failure&lt;/b&gt; problems. Though options above will help you reduce fragmentation, I would recommend to use them only if you HAVE problems with fragmentation. Using PLAB is important from multi core prospective and such soft disabling of PLAB may have serious impact on young collection pause time.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;div style="background: #FDE9D9; border: solid #C00000 1.5pt; mso-background-themecolor: accent6; mso-background-themetint: 51; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #FDE9D9; border: none; mso-background-themecolor: accent6; mso-background-themetint: 51; mso-border-alt: solid #C00000 1.5pt; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;Remainder:&lt;/b&gt; Section above was based on my missunderstaning of PLABs. Correct description can be found &lt;a href="http://aragozin.blogspot.com/2011/11/java-gc-hotspots-cms-promotion-buffers.html"&gt;here&lt;/a&gt;.&lt;br /&gt;Next section is ok :)&amp;nbsp; &lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;How to diagnose problems with fragmentation?&lt;/div&gt;&lt;h2&gt;Monitoring heap fragmentation&lt;/h2&gt;&lt;div class="MsoNormal"&gt;Below are options, that will help you diagnose and monitor problem with CMS heap fragmentation.&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-border-themecolor: text2; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;-XX:+PrintGCDetails&lt;br /&gt;-XX:+PrintPromotionFailure&lt;br /&gt;-XX:PrintFLSStatistics=1&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;PrintGCDetails&lt;/span&gt;&lt;/b&gt; is MUST HAVE base line GC diagnostic option. &lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;PrintPromotionFailure&lt;/span&gt;&lt;/b&gt; will print few more details about promotion failures (see example below).&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-border-themecolor: text2; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;592.079: [ParNew &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #c00000; font-family: &amp;quot;Courier New&amp;quot;;"&gt;(0: promotion failure size = 2698)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&amp;nbsp; (promotion failed): 135865K-&amp;gt;134943K(138240K), 0.1433555 secs]&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;PrintFLSStatistics=1&lt;/span&gt;&lt;/b&gt; will print free list statistics each young or old collection (see example below).&lt;/div&gt;&lt;div style="background: #DBE5F1; border: dashed #1F497D 1.0pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-border-themecolor: text2; mso-element: para-border-div; padding: 1.0pt 4.0pt 1.0pt 4.0pt;"&gt;&lt;div class="MsoNormal" style="background: #DBE5F1; border: none; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-border-alt: dash-small-gap #1F497D .5pt; mso-border-themecolor: text2; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0cm;"&gt;&lt;span style="color: #17365d; font-family: &amp;quot;Courier New&amp;quot;;"&gt;Statistics for BinaryTreeDictionary:&lt;br /&gt;------------------------------------&lt;br /&gt;Total Free Space: 40115394&lt;br /&gt;Max&amp;nbsp;&amp;nbsp; Chunk Size: 38808526&lt;br /&gt;Number of Blocks: 1360&lt;br /&gt;Av.&amp;nbsp; Block&amp;nbsp; Size: 29496&lt;br /&gt;Tree&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Height: 22 &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Most important parameter of FLS (free list space) statistics is max chunk size. If size of max chunk decreasing over time, that means increasing fragmentation of heap and risk of promotion failure.&lt;/div&gt;&lt;h1 style="tab-stops: 140.25pt;"&gt;Conclusion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/h1&gt;&lt;div class="MsoNormal"&gt;Let me summarize, how to reduce risk of &lt;b style="mso-bidi-font-weight: normal;"&gt;concurrent mode&lt;/b&gt; and &lt;b style="mso-bidi-font-weight: normal;"&gt;promotion failures&lt;/b&gt; using CMS collector.&lt;/div&gt;&lt;div class="MsoNormal"&gt;1. Provide CMS enough head room, more free space – less risk of fragmentation. Remember any garbage collector need some extra space to work efficiently.&lt;/div&gt;&lt;div class="MsoNormal"&gt;2. Let CMS run continuously using initiating occupancy settings (you may want reduce number of concurrent threads though).&lt;/div&gt;&lt;div class="MsoNormal"&gt;3. If you still having problems – reduce old PLAB size.&lt;/div&gt;&lt;div class="MsoNormal"&gt;4. Avoid spurious allocation of very large objects in application (resize of large hash table is a good example). Regular allocation of large objects is ok, though.&lt;/div&gt;&lt;h1&gt;See also &lt;/h1&gt;&lt;a href="http://aragozin.blogspot.com/2011/11/java-gc-hotspots-cms-promotion-buffers.html"&gt;Java GC, HotSpot's CMS promotion buffers&amp;nbsp; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://aragozin.blogspot.com/2011/10/cms-heap-fragmentation-follow-up-1.html"&gt;CMS heap fragmentation. Follow up 1&lt;/a&gt; &lt;br /&gt;&lt;a href="http://aragozin.blogspot.com/2011/09/hotspot-jvm-garbage-collection-options.html"&gt;HotSpot JVM garbage collection options cheat sheet&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html"&gt;Understanding GC pauses in JVM, HotSpot's minor GC&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aragozin.blogspot.com/2011/06/understanding-gc-pauses-in-jvm-hotspots_02.html"&gt;Understanding GC pauses in JVM, HotSpot's CMS collector&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aragozin.blogspot.com/2011/06/how-to-tame-java-gc-pauses-surviving.html"&gt;How to tame java GC pauses? Surviving 16GiB heap and greater&lt;/a&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;var dzone_url = 'http://aragozin.blogspot.com/2011/10/java-cg-hotspots-cms-and-heap.html#comments';&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_title = 'Java GC, HotSpot's CMS and heap fragmentation';&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;var dzone_style = '2';&lt;/script&gt;&lt;br /&gt;&lt;script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-3022185187901519315?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/3022185187901519315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/java-cg-hotspots-cms-and-heap.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/3022185187901519315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/3022185187901519315'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/java-cg-hotspots-cms-and-heap.html' title='Java GC, HotSpot&apos;s CMS and heap fragmentation'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-qBDgpdgvPTU/TpYNRG64CFI/AAAAAAAAKHE/o-3dOt87MMY/s72-c/blog-10.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-1832157594218793050</id><published>2011-10-07T11:52:00.003+01:00</published><updated>2012-02-22T09:38:55.845Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Coherence'/><category scheme='http://www.blogger.com/atom/ns#' term='write behind'/><category scheme='http://www.blogger.com/atom/ns#' term='data grid'/><title type='text'>Coherence write behind, finding not-yet-stored entries</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Write behind strategy may be very useful in certain cases. Using Coherence you can use this pattern in very smart way - synchronously replicate your data in memory over several nodes, then asynchronously write to slow external storage. This way you will not lose any data in case of single server outage. One unpleasant thing is that Coherence does not retain sequence of updates in certain cases, but wait,&amp;nbsp; this is a distributed system after all :)&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;But there is a catch. Let's assume you are receiving message via JMS, put data to Coherence grid, start processing etc. But you do not want to acknowledge message until it is written to persistent storage.&lt;/div&gt;&lt;div class="MsoNormal"&gt;While Coherence let your data survive single node failure, there could be network failure, logical bug in your system or outage of persistent storage your are writing to. You want to be consistent, you can process message, but you do not want to confirm its delivery (delete it from one persistent storage) until it is not written into another persistent storage.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;So, is it possible to find which entries in cache are not persisted yet?&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Yes, it is.&lt;/b&gt; Internally Coherence marks not-yet-stored entries with special flag. This flag is usually invisible for application, but we can access it using some low level Coherence API.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Below is StoreFlagExtractor returning FALSE for vulnerable entries.&lt;/div&gt;&lt;div style="background: #F2F2F2; border: solid windowtext 1.0pt; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-element: para-border-div; padding: 1.0pt 1.0pt 1.0pt 1.0pt;"&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;class&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; StoreFlagExtractor &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;extends&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; AbstractExtractor &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;implements&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; PortableObject &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;private&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;static&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;final&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;long&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; serialVersionUID &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #ff8000; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;20010915L&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; StoreFlagExtractor&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;()&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;int&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; compare&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Object object1&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; Object object2&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;// make no sense&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; UnsupportedOperationException&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;int&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; compareEntries&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;com&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;tangosol&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;util&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;QueryMap&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Entry entry1&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; com&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;tangosol&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;util&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;QueryMap&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Entry entry2&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;// make no sense&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; UnsupportedOperationException&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; Object extract&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Object object&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;// decorator can be extracted only from binary entry&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;throw&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; UnsupportedOperationException&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @SuppressWarnings&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: grey; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;"rawtypes"&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; Object extractFromEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;java&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;util&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Map&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Entry entry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BinaryEntry binEntry &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;BinaryEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; entry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Binary binValue &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; binEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;getBinaryValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; extractInternal&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;binValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; binEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; Object extractOriginalFromEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;com&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;tangosol&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;util&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;MapTrigger&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Entry entry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BinaryEntry binEntry &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;BinaryEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; entry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Binary binValue &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; binEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;getOriginalBinaryValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;();&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; extractInternal&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;binValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; binEntry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;private&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; Object extractInternal&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;Binary binValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; BinaryEntry entry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;ExternalizableHelper&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;isDecorated&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;binValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;))&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Binary store &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; ExternalizableHelper&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;getDecoration&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;binValue&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; ExternalizableHelper&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;DECO_STORE&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;);&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;store &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;!=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;null&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Object st &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;=&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; ExternalizableHelper&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;fromBinary&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;store&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;,&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; entry&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;getSerializer&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;());&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; st&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; Boolean&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;.&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;TRUE&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;;&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;void&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; readExternal&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;PofReader paramPofReader&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; IOException &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;// do nothing&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;public&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;span style="color: #8000ff; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;void&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; writeExternal&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;(&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;PofWriter paramPofWriter&lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;)&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;throws&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt; IOException &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;{&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: green; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;// do nothing&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="background: #F2F2F2; border: none; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-background-themecolor: background1; mso-background-themeshade: 242; mso-border-alt: solid windowtext .5pt; mso-padding-alt: 1.0pt 1.0pt 1.0pt 1.0pt; padding: 0cm;"&gt;&lt;b&gt;&lt;span style="color: navy; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;; font-size: 7pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;strike&gt;Using this extractor you can easily query unstored entries, set listeners and even build indexes and CQ for such entries.&lt;/strike&gt;&lt;br /&gt;UPDATE: Changes of STORE decoration are not triggering cache events (only backing map events) and index updates. Nor CQ nor indexes nor listener would not work. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-1832157594218793050?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/1832157594218793050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/coherence-write-behind-finding-not-yet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/1832157594218793050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/1832157594218793050'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/coherence-write-behind-finding-not-yet.html' title='Coherence write behind, finding not-yet-stored entries'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-6136352912027737228</id><published>2011-10-04T19:06:00.000+01:00</published><updated>2011-10-04T19:06:50.745+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><category scheme='http://www.blogger.com/atom/ns#' term='russian'/><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>Tech talk on Highload++ Moscow, Secret of garbage collection in Java</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Today I was speaking at Highload++ conference at Moscow.&lt;br /&gt;Below is slide deck in russian.&lt;br /&gt;&lt;br /&gt;&lt;div id="__ss_9545575" style="width: 425px;"&gt;&lt;object height="355" id="__sse9545575" width="425"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=secretsofgarbagecollectioninjava-highload2011-111004125806-phpapp02&amp;amp;stripped_title=java-9545575&amp;amp;userName=aragozin" /&gt;&lt;param name="allowFullScreen" value="true"/&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;embed name="__sse9545575" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=secretsofgarbagecollectioninjava-highload2011-111004125806-phpapp02&amp;amp;stripped_title=java-9545575&amp;amp;userName=aragozin" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-6136352912027737228?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/6136352912027737228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/tech-talk-on-highload-moscow-secret-of.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/6136352912027737228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/6136352912027737228'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/tech-talk-on-highload-moscow-secret-of.html' title='Tech talk on Highload++ Moscow, Secret of garbage collection in Java'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-1739568165552036328</id><published>2011-10-03T05:57:00.003+01:00</published><updated>2011-10-13T20:06:47.889+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Moscow'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><category scheme='http://www.blogger.com/atom/ns#' term='tech talk'/><category scheme='http://www.blogger.com/atom/ns#' term='russian'/><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>TechTalk: Garbage collection in Java, Mocow, Oct 13</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you happen to be in Moscow, I'm glad to invite you on my tech talk about GC tunning in JVM.&lt;br /&gt;Event will occur 13 Oct at 19:00, language is russian.&lt;br /&gt;&lt;br /&gt;UPDATE&lt;br /&gt;Below are slides from event (in english).&lt;br /&gt;&lt;iframe frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/8996346" width="425"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-1739568165552036328?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/1739568165552036328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/10/techtalk-garbage-collection-in-java.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/1739568165552036328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/1739568165552036328'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/10/techtalk-garbage-collection-in-java.html' title='TechTalk: Garbage collection in Java, Mocow, Oct 13'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-8141846480622372985</id><published>2011-09-08T12:00:00.002+01:00</published><updated>2011-09-08T21:12:29.532+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='garbage collection'/><title type='text'>HotSpot JVM garbage collection options cheat sheet (v2)</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="MsoNormal"&gt;In this article I have collected a list of options related to GC tuning in JVM. This is not a comprehensive list, I have only collected options which I use in practice (or at least understand why I may want to use them).&lt;/div&gt;&lt;div class="MsoNormal"&gt;Compared to &lt;a href="http://aragozin.blogspot.com/2011/07/hotspot-jvm-garbage-collection-options.html"&gt;previous version&lt;/a&gt; a few useful diagnostic options was added. Additionally section for G1 specific options was introduced.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dl.dropbox.com/u/1704203/BLOG%20HotSpot%20GC%20options%20cheat%20sheet%20v2.pdf"&gt;PDF version &lt;/a&gt;&lt;/div&gt;&lt;h1&gt;HotSpot GC collectors&lt;/h1&gt;&lt;div class="MsoNormal"&gt;HotSpot JVM may use one of 6 combinations of garbage collection algorithms listed below.&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-border-insideh: .75pt solid white; mso-border-insidev: .75pt solid white; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 154.25pt;" valign="top" width="206"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;Young collector&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 191.35pt;" valign="top" width="255"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;Old collector&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 154.25pt;" valign="top" width="206"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Serial   (DefNew)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 191.35pt;" valign="top" width="255"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Serial   Mark-Sweep-Compact&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+UseSerialGC&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 154.25pt;" valign="top" width="206"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Parallel   scavenge (PSYoungGen)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 191.35pt;" valign="top" width="255"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Serial Mark-Sweep-Compact   (PSOldGen)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+UseParallelGC&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 154.25pt;" valign="top" width="206"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Parallel   scavenge (PSYoungGen)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 191.35pt;" valign="top" width="255"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Parallel Mark-Sweep-Compact   (ParOldGen)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+UseParallelOldGC&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 154.25pt;" valign="top" width="206"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Serial   (DefNew)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 191.35pt;" valign="top" width="255"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Concurrent   Mark Sweep&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+UseConcMarkSweepGC   &lt;br /&gt;-XX:-UseParNewGC&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 154.25pt;" valign="top" width="206"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Parallel   (ParNew)&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 191.35pt;" valign="top" width="255"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-size: 10pt;"&gt;Concurrent   Mark Sweep&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+UseConcMarkSweepGC   &lt;br /&gt;-XX:+UseParNewGC&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;"&gt;   &lt;td colspan="2" style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: 1.0pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: .75pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 345.6pt;" valign="top" width="461"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;G1&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 149.65pt;" valign="top" width="200"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+UseG1GC&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;GC logging options&lt;/h1&gt;&lt;div class="MsoNormal"&gt;Please note that many of logging options could be modified on running JVM using JMX (e.g. via JConsole).&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableMediumGrid3Accent1" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: -1;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 0;"&gt;   &lt;td colspan="2" style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;General options&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-verbose:gc &lt;/span&gt;or&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt; -XX:+PrintGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print basic GC info&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintGCDetails&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print more elaborated GC info&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintGCTimeStamps&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print timestamps for each GC event (seconds count from start of JVM)&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintGCDateStamps&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print date stamps at garbage collection events (e.g.   &lt;span style="font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 8pt;"&gt;2011-09-08T14:20:29.557+0400:   [GC...&lt;/span&gt; )&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintGC\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;TaskTimeStamps&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print timestamps for individual GC worker thread tasks (very verbose)&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-Xloggc:&lt;file&gt;&lt;/file&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Redirects GC output to a file instead of console&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 7;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+Print\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;TenuringDistribution&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print detailed demography of young space after each collection &lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 8;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintTLAB&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print TLAB allocation statistics&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 9;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintReferenceGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print times for weak/soft/JNI/etc reference processing during STW   pause&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 10;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintJNIGCStalls&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Reports if GC is waiting for native code to unpin   object in memory&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 11;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintGC\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ApplicationStoppedTime&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print pause summary after each stop-the-world pause&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 12;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+PrintGC\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ApplicationConcurrentTime&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print time for each concurrent phase of GC &lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 13;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+Print\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ClassHistogramAfterFullGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Prints class histogram after full GC&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 14;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+Print\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ClassHistogramBeforeFullGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Prints class histogram before full GC&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 15;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+HeapDump\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;AfterFullGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Creates heap dump file after full GC&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 16;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+HeapDump\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;BeforeFullGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Creates heap dump file before full GC &lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 17;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+HeapDump\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;OnOutOfMemoryError&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Creates heap dump in out-of-memory condition&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 18;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:HeapDumpPath=&amp;lt;path&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Specifies path to save heap dumps&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 19;"&gt;   &lt;td colspan="2" style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: .75pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: 1.0pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;CMS specific options&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 20;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:PrintCMSStatistics=2&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print additional CMS statistics if n &amp;gt;= 1&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 21;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+Print\&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;CMSInitiationStatistics&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print CMS initiation details&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 22;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:PrintFLSStatistics=2&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print additional info concerning free lists&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 23;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:PrintFLSCensus=2&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Print additional info concerning free lists&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 24;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+PrintPromotionFailure&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Print additional diagnostic information following promotion   failure&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 25;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+CMSDumpAt\&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;PromotionFailure&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Dump useful information about the state of the CMS old generation   upon a promotion failure.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 26;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+CMSPrint\&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;ChunksInDump&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;In a CMS dump enabled by option above, include more detailed information about the free chunks.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 27; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: 1.0pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: .75pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 260.55pt;" valign="top" width="347"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:+CMSPrint\&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;ObjectsInDump&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 234.7pt;" valign="top" width="313"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;In a CMS dump enabled by option above, include more detailed information about the allocated objects.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;JVM sizing options&lt;/h1&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-border-insideh: .75pt solid white; mso-border-insidev: .75pt solid white; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-Xms2048m -Xmx2g &lt;/span&gt;or&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;‑XX:InitialHeapSize=2g &lt;br /&gt;‑XX:MaxHeapSize=2g&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Initial and max size of heap space (young space + tenured space). Permanent   space does not count to this size.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:NewSize=64m &lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:MaxNewSize=64m&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Initial and max size of young space.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:NewRatio=3&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Alternative way to specify young space size. Sets ration of young vs   tenured space (e.g. -XX:NewRatio=2 means that young space will be 2 time   smaller than tenuted space).&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:SurvivorRatio=15&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Sets size of single survivor space as a portion of Eden space size   (e.g. -XX:NewSize=64m -XX:SurvivorRatio=6 means that each survivor space will   be 8m and eden will be 48m).&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:PermSize=256m&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;  -XX:MaxPermSize=256m&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Initial and max size of permanent space.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-Xss256k&lt;/span&gt;&lt;/tt&gt;   or &lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:ThreadStackSize=256k&lt;/span&gt;&lt;/tt&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Sets size of stack area dedicated to each thread. Thread stacks do   not count to heap size.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;tt&gt;&lt;span style="font-size: 10pt;"&gt;-XX:MaxDirectMemorySize=2g&lt;/span&gt;&lt;/tt&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Maximum size of off-heap memory available for JVM&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;Young collection tuning&lt;/h1&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-border-insideh: .75pt solid white; mso-border-insidev: .75pt solid white; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;b&gt;&lt;span style="color: white;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:Initial\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;TenuringThreshold=8&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Initial value for tenuring threshold (number of collections before   object will be promoted to tenured space).&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:Max\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;TenuringThreshold=15&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Max value for tenuring threshold.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:Pretenure\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;SizeThreshold=2m&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Max object size allowed to be allocated in young space (large objects   will be allocated directly in old space). Thread local allocation bypasses this   check so if TLAB is large enough object exciding size threshold still may be   allocated in young.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+AlwaysTenure&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Promote all objects surviving young collection immediately to tenured   space (equivalent of -XX:MaxTenuringThreshold=0)&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+NeverTenure&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Objects from young space will never get promoted to tenured space   while survivor space is large enough to keep them.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6;"&gt;   &lt;td colspan="2" style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: .75pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: 1.0pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Thread local allocation blocks&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 7;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+UseTLAB&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Use thread local allocation blocks in young space. Enabled by   default.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 8;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+ResizeTLAB&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Allow JVM to adaptively resize TLAB for threads.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 9;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:TLABSize=1m&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Initial size of TLAB for thread&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 10; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: 1.0pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: .75pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:MinTLABSize=64k&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Minimal allowed size of TLAB&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;CMS tuning options&lt;/h1&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableMediumGrid3Accent1" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: -1;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 0;"&gt;   &lt;td colspan="2" style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Controlling initial mark phase&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+UseCMSInitiating\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;OccupancyOnly&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Only use occupancy as a criterion for starting a CMS collection.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSInitiating\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;OccupancyFraction=70&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Percentage CMS generation occupancy to start a CMS   collection cycle. A negative value means that CMSTriggerRatio is used.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSBootstrap\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;Occupancy=10&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Percentage CMS generation occupancy at which to initiate CMS   collection for bootstrapping collection stats.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSTriggerRatio=70&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Percentage of MinHeapFreeRatio in CMS generation   that is allocated before a CMS collection cycle commences.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSTriggerPermRatio=90&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Percentage of MinHeapFreeRatio in the CMS perm generation that is   allocated before a CMS collection cycle commences, that also collects the   perm generation.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 6;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSWaitDuration=2000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Once CMS collection is triggered, it will wait for   next young collection to perform initial mark right after. This parameter   specifies how long CMS can wait for young collection.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 7;"&gt;   &lt;td colspan="2" style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: .75pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: 1.0pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Controlling remark phase&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 8;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSParallel\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;RemarkEnabled&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Whether parallel remark enabled (only if ParNewGC),   enabled by default&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 9;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSParallel\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;SurvivorRemarkEnabled&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Whether parallel remark of survivor space enabled (effective only with   option above), enabled by default&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 10;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSScavengeBeforeRemark&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Force young collection before remark phase.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 11;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSScheduleRemark\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;EdenSizeThreshold&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;If Eden used is below this value, don't try to schedule remark&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 12;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSScheduleRemark\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;EdenPenetration=20&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;The Eden occupancy % at which to try and schedule   remark pause&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 13;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSScheduleRemark\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;SamplingRatio=4&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Start sampling Eden top at least before young generation occupancy   reaches 1/&lt;ratio&gt; of the size at which we plan to schedule remark&lt;/ratio&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 14;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:CMSRemarkVerifyVariant=1&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Choose variant (1,2) of verification following   remark&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 15;"&gt;   &lt;td colspan="2" style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: .75pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: 1.0pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Parallel execution&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 16;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+UseParNewGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Use parallel algorithm for young space collection.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 17;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSConcurrentMTEnabled&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Use multiple threads for concurrent phases.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 18;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:ConcGCThreads=2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Number of parallel threads used for concurrent   phase.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 19;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:ParallelGCThreads=2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Number of parallel threads used for stop-the-world phases.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 20;"&gt;   &lt;td colspan="2" style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;CMS incremental mode&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 21;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSIncrementalMode&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Enable incremental CMS mode. Incremental mode is meant for severs   with small number of CPU. Do not use it on modern hardware.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 22;"&gt;   &lt;td colspan="2" style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Miscellaneous options &lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 23;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+CMSClassUnloadingEnabled&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;If not enabled, CMS will not clean permanent space. You should always   enable it in multiple class loader environments such as JEE or OSGi.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 24;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+ExplicitGCInvokes\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;Concurrent&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Let System.gc() trigger concurrent collection   instead of full GC.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 25; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: 1.0pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: .75pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;‑XX:+ExplicitGCInvokes\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;ConcurrentAndUnloadsClasses&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Same as above but also triggers permanent space collection.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;Miscellaneous GC options&lt;/h1&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableMediumGrid3Accent1" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: -1;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 0;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+DisableExplicitGC&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;JVM will ignore application calls to System.gc()&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:SoftRefLRU\&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: 0.0001pt;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;PolicyMSPerMB=1000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Soft references time to live in milliseconds per MB of free space in   the heap&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td colspan="2" style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 495.25pt;" valign="top" width="660"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;OutOfMemoryError conditions&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:+UseGCOverheadLimit&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Use policy to limit of proportion of time spent in GC before an   OutOfMemory error is thrown&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:GCTimeLimit=98&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Limit of proportion of time spent in GC before an   OutOfMemory error is thrown (used with GCHeapFreeLimit)&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-bottom-alt: 1.0pt; mso-border-color-alt: white; mso-border-left-alt: 1.0pt; mso-border-right-alt: .75pt; mso-border-style-alt: solid; mso-border-top-alt: .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 274.75pt;" valign="top" width="366"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:GCHeapFreeLimit=2&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 220.5pt;" valign="top" width="294"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Minimum percentage of free space after a full GC before an OutOfMemoryError   is thrown (used with GCTimeLimit)&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h1&gt;G1 (garbage first) GC options&lt;/h1&gt;&lt;div class="MsoNormal"&gt;G1 is still evolving, so table below have known supported JVM version column&lt;/div&gt;&lt;table border="1" cellpadding="0" cellspacing="0" class="MsoTableMediumGrid3Accent1" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-yfti-tbllook: 1056;"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-firstrow: yes; mso-yfti-irow: -1;"&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 222.5pt;" valign="top" width="297"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;JVM option&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 33.35pt;" valign="top" width="44"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;JVM&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #4F81BD; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-border-left-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 239.4pt;" valign="top" width="319"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 1;"&gt;&lt;b style="mso-bidi-font-weight: normal;"&gt;&lt;span style="color: white;"&gt;Description&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 0;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 222.5pt;" valign="top" width="297"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:G1HeapRegionSize=8m&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 33.35pt;" valign="top" width="44"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;6u26&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 239.4pt;" valign="top" width="319"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Size of heap region for G1 collector. Region size   could be from 1MiB to 32MiB. Default is initial heap size / 2048.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 222.5pt;" valign="top" width="297"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:G1ConfidencePercent=50&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 33.35pt;" valign="top" width="44"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;6u26&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 239.4pt;" valign="top" width="319"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;Confidence coefficient for G1 pause prediction heuristics&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 222.5pt;" valign="top" width="297"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:G1ReservePercent=10&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 33.35pt;" valign="top" width="44"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;6u26&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 239.4pt;" valign="top" width="319"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;It determines the minimum reserve we should have in   the heap to minimize the probability of promotion failure&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3;"&gt;   &lt;td style="background: #D3DFEE; border-top: none; border: solid white 1.0pt; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 222.5pt;" valign="top" width="297"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:MaxGCPauseMillis=200&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 33.35pt;" valign="top" width="44"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;6u26&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #D3DFEE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-alt: solid white .75pt; mso-border-left-alt: solid white .75pt; mso-border-right-alt: solid white 1.0pt; mso-border-top-alt: solid white .75pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 239.4pt;" valign="top" width="319"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm;"&gt;GC time per MMU time slice in milliseconds (for G1 only)&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes;"&gt;   &lt;td style="background: #A7BFDE; border-top: none; border: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 222.5pt;" valign="top" width="297"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;; font-size: 10pt;"&gt;-XX:GCPauseIntervalMillis=300&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 33.35pt;" valign="top" width="44"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;6u26&lt;/div&gt;&lt;/td&gt;   &lt;td style="background: #A7BFDE; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-border-left-alt: solid white 1.0pt; mso-border-top-alt: solid white 1.0pt; padding: 0cm 5.4pt 0cm 5.4pt; width: 239.4pt;" valign="top" width="319"&gt;&lt;div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0cm; mso-yfti-cnfc: 64;"&gt;Time slice for MMU specification in milliseconds   (for G1 only). Should be greater than parameter above.&lt;/div&gt;&lt;/td&gt;  &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7735872642513631302-8141846480622372985?l=blog.ragozin.info' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.ragozin.info/feeds/8141846480622372985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.ragozin.info/2011/09/hotspot-jvm-garbage-collection-options.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/8141846480622372985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7735872642513631302/posts/default/8141846480622372985'/><link rel='alternate' type='text/html' href='http://blog.ragozin.info/2011/09/hotspot-jvm-garbage-collection-options.html' title='HotSpot JVM garbage collection options cheat sheet (v2)'/><author><name>Alexey Ragozin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/_CQV12Vs8lZ0/SuV09NgeGmI/AAAAAAAAIpg/SaVy7eLs13I/S220/Alexey.Ragozin.4036.crop.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7735872642513631302.post-4789380549372557989</id><published>2011-08-30T11:24:00.001+01:00</published><updated>2011-08-31T14:47:02.679+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='indexes'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle Coherence'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucene'/><title type='text'>Lucene in the grid, query performance</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Apache Lucene is very powerful open source full 
