<?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 Memory Management Improvement Proposal</title>
	<atom:link href="http://www.innovationontherun.com/java-memory-management-improvement-proposal/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/</link>
	<description>Ruminations about innovation and software by Rob Di Marco</description>
	<lastBuildDate>Tue, 06 Apr 2010 15:52:14 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>By: Tim</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-306</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Mon, 22 Dec 2008 03:38:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-306</guid>
		<description>Your proposed solution sounds a lot like just having separate processes (JVMs). :)</description>
		<content:encoded><![CDATA[<p>Your proposed solution sounds a lot like just having separate processes (JVMs). <img src='http://www.innovationontherun.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob Di Marco</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-251</link>
		<dc:creator>Rob Di Marco</dc:creator>
		<pubDate>Fri, 31 Oct 2008 16:29:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-251</guid>
		<description>@R Hayes  Very good suggestion to the problem IF I can control the safe abort of the resource threads.  In my above example with Fisheye however, I am using a third party application and reliant on their developers to put the hooks into their runtime processes.</description>
		<content:encoded><![CDATA[<p>@R Hayes  Very good suggestion to the problem IF I can control the safe abort of the resource threads.  In my above example with Fisheye however, I am using a third party application and reliant on their developers to put the hooks into their runtime processes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: R Hayes</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-250</link>
		<dc:creator>R Hayes</dc:creator>
		<pubDate>Fri, 31 Oct 2008 14:45:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-250</guid>
		<description>Rather than trying to sort out which objects belong to which thread (not an easy problem!), have a watchdog thread that monitors memory usage (see Runtime.freeMemory(), Runtime.totalMemory(), Runtime.maxMemory()), and kills dispensible threads if memory exhaustion approaches.

Please don&#039;t literally kill the threads; instead, program in a safe abort (or suspend to external storage) method. Thread.kill is not thread-safe.</description>
		<content:encoded><![CDATA[<p>Rather than trying to sort out which objects belong to which thread (not an easy problem!), have a watchdog thread that monitors memory usage (see Runtime.freeMemory(), Runtime.totalMemory(), Runtime.maxMemory()), and kills dispensible threads if memory exhaustion approaches.</p>
<p>Please don&#8217;t literally kill the threads; instead, program in a safe abort (or suspend to external storage) method. Thread.kill is not thread-safe.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob Di Marco</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-249</link>
		<dc:creator>Rob Di Marco</dc:creator>
		<pubDate>Fri, 31 Oct 2008 12:24:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-249</guid>
		<description>@Kirk You are right that the objects allocated on the heap localized to the thread that eventually causes the OOM will be dumped first.  But the problem is that there is no guarantee that the resource hogging thread will be the one that triggers the OOM error.  It could be a &quot;lighter&quot; thread that causes the OOM and has its objects released.</description>
		<content:encoded><![CDATA[<p>@Kirk You are right that the objects allocated on the heap localized to the thread that eventually causes the OOM will be dumped first.  But the problem is that there is no guarantee that the resource hogging thread will be the one that triggers the OOM error.  It could be a &#8220;lighter&#8221; thread that causes the OOM and has its objects released.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kirk</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-248</link>
		<dc:creator>Kirk</dc:creator>
		<pubDate>Fri, 31 Oct 2008 05:51:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-248</guid>
		<description>OOME was a bit of a shock to me when I first ran into it in 97. Prior I&#039;d been working with Smalltalk virtual machines and in particular, the GemStone virtual machine. That VM was connected to database which meant that is could spill memory onto disk. However, Java can&#039;t and if you want it to play nicely with other applications, you need to define some limits. Otherwise a troubled app/thread could cause the VM to consume the entire machine. That said, allocating a portion of heap to a thread is possible. In fact it&#039;s already being done. As long as you keep all reference localized to a thread (relies on escape analysis), objects should be allocated on heap that is localized to the thread. I believe (but would need to check and confirm) that this size of this space is both capped and configurable.</description>
		<content:encoded><![CDATA[<p>OOME was a bit of a shock to me when I first ran into it in 97. Prior I&#8217;d been working with Smalltalk virtual machines and in particular, the GemStone virtual machine. That VM was connected to database which meant that is could spill memory onto disk. However, Java can&#8217;t and if you want it to play nicely with other applications, you need to define some limits. Otherwise a troubled app/thread could cause the VM to consume the entire machine. That said, allocating a portion of heap to a thread is possible. In fact it&#8217;s already being done. As long as you keep all reference localized to a thread (relies on escape analysis), objects should be allocated on heap that is localized to the thread. I believe (but would need to check and confirm) that this size of this space is both capped and configurable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Rob Di Marco</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-247</link>
		<dc:creator>Rob Di Marco</dc:creator>
		<pubDate>Thu, 30 Oct 2008 22:55:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-247</guid>
		<description>@Dave You are entirely correct about this being a feature of real-time JVMs.  But my problem does not require a full real-time implementation.  I am not interested in determinism.  For example, I don&#039;t require isolation from GC pauses.  While I could use a real-time JVM, I&#039;d rather some of the memory features be ported to the standard JVM.</description>
		<content:encoded><![CDATA[<p>@Dave You are entirely correct about this being a feature of real-time JVMs.  But my problem does not require a full real-time implementation.  I am not interested in determinism.  For example, I don&#8217;t require isolation from GC pauses.  While I could use a real-time JVM, I&#8217;d rather some of the memory features be ported to the standard JVM.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dave</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-246</link>
		<dc:creator>Dave</dc:creator>
		<pubDate>Thu, 30 Oct 2008 19:28:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-246</guid>
		<description>Heap segmentation is already a feature of real-time JVMs.  Look into JSR 1 to find out what sort of capabilities are available.  I will warn you that managing this sort of thing is not as easy as it sounds.</description>
		<content:encoded><![CDATA[<p>Heap segmentation is already a feature of real-time JVMs.  Look into JSR 1 to find out what sort of capabilities are available.  I will warn you that managing this sort of thing is not as easy as it sounds.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ctwise</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-245</link>
		<dc:creator>ctwise</dc:creator>
		<pubDate>Thu, 30 Oct 2008 18:37:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-245</guid>
		<description>I would much prefer getting rid of min/max heap sizes and permanent generation sizes altogether.  I see no reason why I have to figure out the appropriate size of a JVM instead of having it work like every other application, pulling memory as needed from the OS and giving it back when it releases objects.  I understand the technical problems but it&#039;s high time they went away for desktop/server uses.</description>
		<content:encoded><![CDATA[<p>I would much prefer getting rid of min/max heap sizes and permanent generation sizes altogether.  I see no reason why I have to figure out the appropriate size of a JVM instead of having it work like every other application, pulling memory as needed from the OS and giving it back when it releases objects.  I understand the technical problems but it&#8217;s high time they went away for desktop/server uses.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: David Hofmann</title>
		<link>http://www.innovationontherun.com/java-memory-management-improvement-proposal/comment-page-1/#comment-244</link>
		<dc:creator>David Hofmann</dc:creator>
		<pubDate>Thu, 30 Oct 2008 14:17:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.innovationontherun.com/?p=71#comment-244</guid>
		<description>Do others see value in this proposal?
Definitely</description>
		<content:encoded><![CDATA[<p>Do others see value in this proposal?<br />
Definitely</p>
]]></content:encoded>
	</item>
</channel>
</rss>
