<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Java Garbage Collection Boot Camp (Draft)</title>
	<atom:link href="http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/</link>
	<description>Exclusively dedicated to Apache Lucene/Solr open source search technology</description>
	<lastBuildDate>Sat, 04 Feb 2012 01:13:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>By: Fuad Efendi</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-6847</link>
		<dc:creator>Fuad Efendi</dc:creator>
		<pubDate>Tue, 28 Dec 2010 17:39:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-6847</guid>
		<description>I still believe this almost few-years GC Research was caused by thousands OOM-related posts in Lucene and SOLR mailing lists. My viewpoint: nothing will help with OOM until you increase memory allocation -Xms -Xmx. This is because Lucene (still) uses bytearrays for FieldCache (for better performance); and it is used by SOLR caches; and there are natural minimal memory requiremets. It can be few gigabytes for a schema with multiple non-tokenized single-valued fields, ... (I posted comments in SOLR mailing lists)
New Lucene will use compressed arrays of int; to save memory.

If not OOM, we will never ever look at &quot;tuning parameters&quot;... are you?</description>
		<content:encoded><![CDATA[<p>I still believe this almost few-years GC Research was caused by thousands OOM-related posts in Lucene and SOLR mailing lists. My viewpoint: nothing will help with OOM until you increase memory allocation -Xms -Xmx. This is because Lucene (still) uses bytearrays for FieldCache (for better performance); and it is used by SOLR caches; and there are natural minimal memory requiremets. It can be few gigabytes for a schema with multiple non-tokenized single-valued fields, &#8230; (I posted comments in SOLR mailing lists)<br />
New Lucene will use compressed arrays of int; to save memory.</p>
<p>If not OOM, we will never ever look at &#8220;tuning parameters&#8221;&#8230; are you?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fuad Efendi</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-6846</link>
		<dc:creator>Fuad Efendi</dc:creator>
		<pubDate>Tue, 28 Dec 2010 17:28:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-6846</guid>
		<description>You have comments in Russian, cool!
&quot;Семь смертных грехов Solr&quot;</description>
		<content:encoded><![CDATA[<p>You have comments in Russian, cool!<br />
&#8220;Семь смертных грехов Solr&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Семь смертных грехов Solr</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-4288</link>
		<dc:creator>Семь смертных грехов Solr</dc:creator>
		<pubDate>Mon, 01 Feb 2010 22:28:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-4288</guid>
		<description>[...] как JConsole. Хорошей отправной точкой является блог моего коллеги Марка Миллера (Mark Miller) из Lucid Imagination. Еще одним хорошим ресурсом является этот [...]</description>
		<content:encoded><![CDATA[<p>[...] как JConsole. Хорошей отправной точкой является блог моего коллеги Марка Миллера (Mark Miller) из Lucid Imagination. Еще одним хорошим ресурсом является этот [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lucid Imagination &#187; The Seven Deadly Sins of Solr</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-4247</link>
		<dc:creator>Lucid Imagination &#187; The Seven Deadly Sins of Solr</dc:creator>
		<pubDate>Fri, 22 Jan 2010 07:04:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-4247</guid>
		<description>[...] and monitoring the JVM with tools such as JConsole, will pay dividends. A good starting place is a blog by my colleague Mark Miller of Lucid Imagination. Another good resource is this document put out by [...]</description>
		<content:encoded><![CDATA[<p>[...] and monitoring the JVM with tools such as JConsole, will pay dividends. A good starting place is a blog by my colleague Mark Miller of Lucid Imagination. Another good resource is this document put out by [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-4161</link>
		<dc:creator>Mark</dc:creator>
		<pubDate>Wed, 23 Dec 2009 15:24:32 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-4161</guid>
		<description>Having experienced GC issues on very large Lucene indexes I came round to this view:

* Search typically has SLAs measured in milliseconds - a light-touch GC is needed to maintain this.
* Indexing activity typically has SLAs measured in minutes or hours - the impact of a stop-the-world type GC at this scale is of much less consequence

GC policies are for an entire VM so it can be advantageous to split search and indexing activity into seperate VMs to use a GC policy that meets the differing performance requirements outlined above.
The most efficient form of GC is to kill the JVM and there is typically no advantage to keeping any of the objects created as part of an indexing session alive. So for systems where content is only updated in scheduled intervals which is measured in minutes a dedicated indexing process can be spun up and killed for each batch of indexing activity.</description>
		<content:encoded><![CDATA[<p>Having experienced GC issues on very large Lucene indexes I came round to this view:</p>
<p>* Search typically has SLAs measured in milliseconds &#8211; a light-touch GC is needed to maintain this.<br />
* Indexing activity typically has SLAs measured in minutes or hours &#8211; the impact of a stop-the-world type GC at this scale is of much less consequence</p>
<p>GC policies are for an entire VM so it can be advantageous to split search and indexing activity into seperate VMs to use a GC policy that meets the differing performance requirements outlined above.<br />
The most efficient form of GC is to kill the JVM and there is typically no advantage to keeping any of the objects created as part of an indexing session alive. So for systems where content is only updated in scheduled intervals which is measured in minutes a dedicated indexing process can be spun up and killed for each batch of indexing activity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Johnson &#8211; Links: 12-19-2009</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-4153</link>
		<dc:creator>Aaron Johnson &#8211; Links: 12-19-2009</dc:creator>
		<pubDate>Sun, 20 Dec 2009 09:31:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-4153</guid>
		<description>[...] Lucid Imagination &#187; Java Garbage Collection Boot Camp (Draft) Great article on GC. (categories: java optimization jvm performance garbagecollection gc ) [...]</description>
		<content:encoded><![CDATA[<p>[...] Lucid Imagination &raquo; Java Garbage Collection Boot Camp (Draft) Great article on GC. (categories: java optimization jvm performance garbagecollection gc ) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-3873</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Fri, 09 Oct 2009 01:13:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-3873</guid>
		<description>Mike - I&#039;ll think for a bit and get back to you. Can you tell what collector you are using?

Jay - This one I have on the top of my head: You can take a look with JConsole or using JMX (there is a garbage collection section)

With ergonomics, its pretty much just going to be the serial or throughput - throughput for something detected as server class (I found a table for that somewhere but need to dig it up) otherwise serial. With throughput, I think java 5 defaults to the non parallel new gen collector and java 6 defaults to parnew.

Both methods will list the old gen and new gen collectors - using different names than often used elsewhere though. For the old gen, throughput (now more often called parallel) will use MarkSweep. Serial will use MarkSweepCompact. The low pause collector will use ConcurrentMarkSweep. The new collectors also have different names: copy, scavenge, parnew, etc</description>
		<content:encoded><![CDATA[<p>Mike &#8211; I&#8217;ll think for a bit and get back to you. Can you tell what collector you are using?</p>
<p>Jay &#8211; This one I have on the top of my head: You can take a look with JConsole or using JMX (there is a garbage collection section)</p>
<p>With ergonomics, its pretty much just going to be the serial or throughput &#8211; throughput for something detected as server class (I found a table for that somewhere but need to dig it up) otherwise serial. With throughput, I think java 5 defaults to the non parallel new gen collector and java 6 defaults to parnew.</p>
<p>Both methods will list the old gen and new gen collectors &#8211; using different names than often used elsewhere though. For the old gen, throughput (now more often called parallel) will use MarkSweep. Serial will use MarkSweepCompact. The low pause collector will use ConcurrentMarkSweep. The new collectors also have different names: copy, scavenge, parnew, etc</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jay Hill</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-3872</link>
		<dc:creator>Jay Hill</dc:creator>
		<pubDate>Fri, 09 Oct 2009 00:51:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-3872</guid>
		<description>When a JVM is up and running, is there any way to tell which collector is being used? It sounds like the ergonomics feature is determining which approach to take, but do you know if there is a way to find out what it decided to use?

Thanks,
-Jay</description>
		<content:encoded><![CDATA[<p>When a JVM is up and running, is there any way to tell which collector is being used? It sounds like the ergonomics feature is determining which approach to take, but do you know if there is a way to find out what it decided to use?</p>
<p>Thanks,<br />
-Jay</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mike</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-3868</link>
		<dc:creator>Mike</dc:creator>
		<pubDate>Thu, 08 Oct 2009 18:58:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-3868</guid>
		<description>Excellent article, explains this complicated topic as well as any I have read.  I have a situation where my app will peak at 3GB of Heap for a brief period of time, the GC process will give some of that back to the OS but keeps the Heap much larger then I wish it would. I have tried changed MaxHeapFreeRatio and MinHeapFreeRatio and that worked great in the NB&#039;s Profiler when I physically push the GC button.  But I can&#039;t seem to find the right options to get the GC to give the memory back to the OS outside of the profiler, I have tried system.GC() in my code.  Any suggestions?</description>
		<content:encoded><![CDATA[<p>Excellent article, explains this complicated topic as well as any I have read.  I have a situation where my app will peak at 3GB of Heap for a brief period of time, the GC process will give some of that back to the OS but keeps the Heap much larger then I wish it would. I have tried changed MaxHeapFreeRatio and MinHeapFreeRatio and that worked great in the NB&#8217;s Profiler when I physically push the GC button.  But I can&#8217;t seem to find the right options to get the GC to give the memory back to the OS outside of the profiler, I have tried system.GC() in my code.  Any suggestions?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://www.lucidimagination.com/blog/2009/09/19/java-garbage-collection-boot-camp-draft/comment-page-1/#comment-3793</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Thu, 01 Oct 2009 17:39:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.lucidimagination.com/blog/?p=1093#comment-3793</guid>
		<description>I havn&#039;t had a chance to play with it yet - I certainly will when I get the time though! Supposed to be a big improvement on CMS - better with fragmentation, better at avoiding major collections, and better throughput! What more could you ask for ;)</description>
		<content:encoded><![CDATA[<p>I havn&#8217;t had a chance to play with it yet &#8211; I certainly will when I get the time though! Supposed to be a big improvement on CMS &#8211; better with fragmentation, better at avoiding major collections, and better throughput! What more could you ask for <img src='http://www.lucidimagination.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

