<?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-3857007129715168662</id><updated>2012-02-16T11:12:42.386+02:00</updated><category term='IaaS'/><category term='summit'/><category term='cloud computing'/><title type='text'>Le Café Performant:  A Blog On Java Performance</title><subtitle type='html'>This blog contains a fine blend of Java and performance, seasoned with a light touch &lt;br&gt;of software architecture</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.performize-it.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-1969278022190662638</id><published>2011-12-17T08:56:00.003+02:00</published><updated>2011-12-18T09:34:13.094+02:00</updated><title type='text'>A tale about a JVM crash</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial,sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;It happened again :)&amp;nbsp;&lt;/div&gt;&lt;div&gt;After a long time it happened again....&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial,sans-serif;"&gt;I was called to investigate a JVM crash. Usually it is the sign of a long adventure along side with the Java platform. A&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&amp;nbsp;thrilling and&amp;nbsp;frustrating&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&amp;nbsp;event in the same time. This time I was lucky it took me 4 hours to reach a valid solution ....&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="color: #741b47; font-size: large;"&gt;Chapter I : First Encounter&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;First of all I looked at the directory from which the process started running. I started looking at the &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;hs_err_pidXXXXX.log&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;files that existed there about... 50 such files as there is a watchdog process which relaunch the application&amp;nbsp;immediately&amp;nbsp;after the crash. In this case just for the sake of crashing again.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;I was happy to discover they accumulate very fast the process needs merely 45 seconds to crash. Someone who is not familiar with those kind of problems&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial,sans-serif;"&gt;may be startled by fact that the process crashes so fast but for me that was heaven! 45 seconds to reproduction.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;I started looking at the crash files. They were very disappointing, each one them crashed on different address the thread was applicative. In addition stack trace was missing . I snooped around to make sure no native code was running on this process(no native code good news).&amp;nbsp;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;All I had was a pale description of a JVM frustration:&amp;nbsp;&amp;nbsp;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# A fatal error has been detected by the Java Runtime Environment:&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# &amp;nbsp;EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000000000000, pid=4384, tid=8364&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# JRE version: 6.0_26-b03&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# Java VM: Java HotSpot(TM) 64-Bit Server VM (20.1-b02 mixed mode windows-amd64 compressed oops)&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# Problematic frame:&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# C &amp;nbsp;0x0000000000000000&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# If you would like to submit a bug report, please visit:&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;# &amp;nbsp;&amp;nbsp;&lt;a href="http://java.sun.com/webapps/bugreport/crash.jsp" target="_blank"&gt;http://java.sun.com/webapps/&lt;wbr&gt;&lt;/wbr&gt;bugreport/crash.jsp&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;#&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;--------------- &amp;nbsp;T H R E A D &amp;nbsp;---------------&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;Current thread (0x000000001029e000): &amp;nbsp;JavaThread "XXXXXXXXXXXXX" daemon [_thread_in_Java, id=8364, stack(0x000000001a840000,&lt;wbr&gt;&lt;/wbr&gt;0x000000001a940000)]&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #274e13;"&gt;siginfo: ExceptionCode=0xc0000005, ExceptionInformation=&lt;wbr&gt;&lt;/wbr&gt;0x0000000000000008 0x0000000000000000&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;The fact that crashing thread was an applicative thread was indicating that the crash was not related to GC.I tried switching the GC mechanism anyhow with no change in behavior. I also removed compressedOops and crash remain there standing still.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial,sans-serif;"&gt;My next guess was the JIT compiler so as a first step I added the following command line option&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #38761d; font-family: arial,sans-serif;"&gt;-Djava.compiler=NONE&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;. That guess was working like a charm JVM stopped crashing.&amp;nbsp; That was still not a sign for euphoria, running interpreted&amp;nbsp;mode is not a very good choice so the next step included divide and conquer.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #741b47; font-size: large;"&gt;Chapter II: Lion hunting&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;I added the following flags to the JVM &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:+LogCompilation -XX:+&lt;wbr&gt;&lt;/wbr&gt;UnlockDiagnosticsVMOptions&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;When a HotSpot JVM is running with log compilation flag it is creating &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;hotspot.log&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;file which includes detailed info regarding all of its JIT activity. For a detailed document regarding this log file take a look &lt;/span&gt;&lt;a href="http://wikis.sun.com/display/HotSpotInternals/LogCompilation+overview" style="color: #222222;" target="_blank"&gt;here&lt;/a&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;Truth be told I still don't fully understand the generated XML but I was looking for the following lines :&lt;br /&gt;&lt;span style="color: #38761d;"&gt;&lt;task_queued backedge_count="5000" bytes="452" comment="count" compile_id="1" count="2" hot_count="2" iicount="2" method="java/util/Properties$LineReader readLine ()I" stamp="0.094"&gt;&lt;/task_queued&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #38761d; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;task_queued backedge_count="5000" bytes="452" comment="count" compile_id="1" count="2" hot_count="2" iicount="2" method="java/util/Properties$LineReader readLine ()I" stamp="0.094"&gt;&lt;/task_queued&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;Compilation of a method is performed&amp;nbsp;asynchronously&amp;nbsp;by specific JVM threads and every request for JIT is queued before compilation. Grabbing all these lines will give me a full list of all compilation attempts done by the JVM. &amp;nbsp;This list now was taken to a text editor and manipulated so it can be fed to the &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;.hotspot_compiler &lt;/span&gt;file.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="color: #38761d;"&gt;.hotspot_compiler&lt;/span&gt; is a JIT exclusion file which should be placed in the working directory from which the JVM is launching. It contains lines of the following format:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;exclude&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;java/util/Properties$LineReader readLine ()I&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;Telling the JVM|: &lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;"Dear JVM &amp;nbsp;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&amp;nbsp;Do not compile the method realLine which resides in the inner class LineReader of the class java.util.Properties, &amp;nbsp;Thanks in advance,&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; A desperate programmer"&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;I started with approx. 2000 such lines and fed them to the &lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;.hotspot_compiler&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt; file (after removing the compile=NONE flag of course ) and the JVM did not crash. After the divide and conquer process I was left with a single method which its compilation made the JVM freak out.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;Everybody is happy crash eliminated with minimal effect on performance.&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #741b47; font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #741b47; font-size: large;"&gt;Chapter III: After-max&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;Everybody is happy, except of me.... a lot of questions remain unanswered.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;The method which&amp;nbsp;aggravated&amp;nbsp;the crash looks like this:&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;protected boolean isXXXXXXXXX(double stdDev,double mean){&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //|stddev/mean| &amp;gt; 10^-5&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(stdDev==0.0){&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return mean==0.0;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(Double.isNaN(stdDev) || Double.isNaN(mean)){&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/div&gt;&lt;div class="p1" style="border-collapse: collapse; color: black; font-family: arial, sans-serif; font: normal normal normal 15px/normal Calibri; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-size: small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Math.abs(mean/stdDev) &amp;lt; 100000.0;&lt;/span&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: #6aa84f; font-family: Calibri;"&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;What? That's a method which can cause the JVM to crash ? I don't think so...&amp;nbsp;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;My guess was that it is related to some kind of interaction.....&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;I tried to reproduce the crash on an isolated test and as expected, nothing.&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;Could not find anything in the internet since I don't even know how to ask the correct question.&lt;/div&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;What am I going to do next ?:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;Try to upgrade the JDK sub version though I could not find a fixed bug related to this in the release notes.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;Try JDK 1.7&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;Try 32 bit JVM&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;Try to disable certain optimizations such as Escape analysis&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="color: #333333; display: inline ! important; float: none; font-family: 'Lucida Console',Monaco,'DejaVu Sans Mono',monospace; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;"&gt;Use -XX:+PrintOptoAssembly&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;But the most important of all hoping for some input from the community......&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #222222; font-family: arial,sans-serif; font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="yj6qo ajU" style="border-collapse: collapse; color: #222222; cursor: pointer; font-family: arial, sans-serif; font-size: 13px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 10px; padding-left: 0px; padding-right: 0px; padding-top: 10px; width: 22px;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-1969278022190662638?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/1969278022190662638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=1969278022190662638' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/1969278022190662638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/1969278022190662638'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/12/tale-about-jvm-crash.html' title='A tale about a JVM crash'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-262433838727295615</id><published>2011-11-14T18:55:00.000+02:00</published><updated>2011-11-14T18:55:19.029+02:00</updated><title type='text'>Java 7 and String.intern()</title><content type='html'>For a long time interning strings&amp;nbsp;in HotSpot-VM would&amp;nbsp;store the result in permanent generation. Since Java 7 this is no longer true. Interned strings are stored in the heap. As a result if you have an application where relied on intern() you may need to&amp;nbsp;re-size&amp;nbsp;your perm and your heap. Heap need to be larger Perm need to be smaller.&lt;br /&gt;I understood that permanent generation is going to be removed from the&amp;nbsp;HotSpot-VM&amp;nbsp;in futures releases of Java.&lt;br /&gt;Maybe this is the first step in this direction :)&lt;br /&gt;Reference&lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html"&gt;http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-262433838727295615?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/262433838727295615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=262433838727295615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/262433838727295615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/262433838727295615'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/11/java-7-and-stringintern.html' title='Java 7 and String.intern()'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-7637297168037762056</id><published>2011-04-27T10:53:00.003+03:00</published><updated>2011-04-27T20:09:25.998+03:00</updated><title type='text'>Java 6u25 released</title><content type='html'>Two new operations in ThreadingMBean&lt;br /&gt;&amp;nbsp;- getThreadCPUTime - over threadID array&lt;br /&gt;&amp;nbsp;-&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: arial, helvetica, sans-serif; font-size: 12px;"&gt;getThreadAllocateBytes - allocated bytes on thread basis&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/6u25releasenotes-356444.html"&gt;http://www.oracle.com/technetwork/java/javase/6u25releasenotes-356444.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Tiered compilation is in...&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 11px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-size: 12px; line-height: 16px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 17px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;HotSpot diagnostic information has been expanded in several ways:&lt;/div&gt;&lt;ul style="color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 10px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.oracleimg.com/us/assets/bullet1.gif); background-origin: initial; background-position: 0px 5px; background-repeat: no-repeat no-repeat; color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px;"&gt;Tracking of cumulative Java heap bytes allocated on a per-thread basis (Threading mbean was added an operation getThreadAllocateBytes&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.oracleimg.com/us/assets/bullet1.gif); background-origin: initial; background-position: 0px 5px; background-repeat: no-repeat no-repeat; color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px;"&gt;&lt;br /&gt;&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.oracleimg.com/us/assets/bullet1.gif); background-origin: initial; background-position: 0px 5px; background-repeat: no-repeat no-repeat; color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px;"&gt;On&amp;nbsp;&lt;code style="color: #666666; font-family: courier, 'courier new', monaco; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;OutOfMemoryError&lt;/code&gt;, indication of the faulting thread in the heap dump&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.oracleimg.com/us/assets/bullet1.gif); background-origin: initial; background-position: 0px 5px; background-repeat: no-repeat no-repeat; color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px;"&gt;Improved handling of unexpected exceptions in application native code&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.oracleimg.com/us/assets/bullet1.gif); background-origin: initial; background-position: 0px 5px; background-repeat: no-repeat no-repeat; color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px;"&gt;Better indication of native heap exhaustion&lt;/li&gt;&lt;li style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://www.oracleimg.com/us/assets/bullet1.gif); background-origin: initial; background-position: 0px 5px; background-repeat: no-repeat no-repeat; color: black; font-family: arial, helvetica, sans-serif; font-size: 12px; list-style-image: initial; list-style-position: initial; list-style-type: none; margin-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 10px; padding-right: 0px; padding-top: 0px;"&gt;More details in hs_err files&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-7637297168037762056?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/7637297168037762056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=7637297168037762056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7637297168037762056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7637297168037762056'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/04/java-6u25-released.html' title='Java 6u25 released'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8119000335077349619</id><published>2011-04-06T20:45:00.001+03:00</published><updated>2011-04-06T20:45:16.991+03:00</updated><title type='text'>On JDK 7 G1 enables compressed Oops by default</title><content type='html'>Didn't understand why CompressedOops are not enabled by default....&lt;br /&gt;Take a look at this&lt;br /&gt;&lt;a href="http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2011-February/002312.html"&gt;http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2011-February/002312.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-8119000335077349619?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8119000335077349619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8119000335077349619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8119000335077349619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8119000335077349619'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/04/on-jdk-7-g1-enables-compressed-oops-by.html' title='On JDK 7 G1 enables compressed Oops by default'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8509944018018485079</id><published>2011-03-22T13:56:00.000+02:00</published><updated>2011-03-22T13:56:14.974+02:00</updated><title type='text'>Thread Top</title><content type='html'>Hi,&lt;br /&gt;I have finally found time to write a small tool which can help profiling Java applications.&lt;br /&gt;Its name is threadTop and it connects to your application via JMX.&lt;br /&gt;It can measure&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp; thread contention&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp; thread CPU usage&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I think it can be very useful when combined with jstack.&lt;/div&gt;&lt;div&gt;Waiting for your feedback :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.performize-it.com/tools/thread-top"&gt;http://www.performize-it.com/tools/thread-top&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-8509944018018485079?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8509944018018485079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8509944018018485079' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8509944018018485079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8509944018018485079'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/03/thread-top.html' title='Thread Top'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8871874871747424700</id><published>2011-03-15T19:31:00.000+02:00</published><updated>2011-03-15T19:31:47.230+02:00</updated><title type='text'>Controlling GC logs at runtime</title><content type='html'>GC logging can be controlled using the following command line options:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:+PrintGC&lt;/span&gt; (same as -verbose:gc) - Displays basic GC details&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:+PrintGCDetail&lt;/span&gt;s &amp;nbsp;- Displays advanced GC details&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:+PrintGCTimeStamps&lt;/span&gt; - Displays the time stamp for&amp;nbsp;every GC event &amp;nbsp;reported&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:+PrintGCDateStamps&lt;/span&gt; -&amp;nbsp;&amp;nbsp;Displays the date for every GC event &amp;nbsp;reported &amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-Xloggc:c:\gc.log&lt;/span&gt; &amp;nbsp; &amp;nbsp; - Writes GC logging to the specified file.&lt;/li&gt;&lt;/ul&gt;It is usually recommended to run with&amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:+PrintGC&amp;nbsp;-XX:+PrintGCTimeStamps&amp;nbsp;-Xloggc:c:\gc.log&lt;/span&gt; even in production.&amp;nbsp;The amount of data written to those files is not huge and it can help to analyze GC throughput ,pause time and even to expose bugs in the GC mechanism.&lt;br /&gt;On the other hand these files are not managed by a "log4j style" rolling appender and will not be trimmed by default. So what would we choose ?&lt;br /&gt;The good news is that logging GC can be configured at runtime. It can be enabled and disabled at will via JMX.&lt;br /&gt;The JMX object&amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;com.sun.management:type=HotSpotDiagnostic&lt;/span&gt; has an attribute named&amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;DiagnosticOptions&lt;/span&gt;. This attribute contains 12 boolean sub-attributes (as for Java 1.6.0_24). All of them are very interesting but for the GC logging we need to take a look on 4 of them:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;PrintGC&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;PrintGCDetails&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;PrintGCTimeStamps&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;PrintGCDateStamps&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;The bad news is that&amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-Xloggc&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;cannot be configured via JMX so you will need to configure it on startup.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;All these can be modified using jconsole or VisualVM using the operation &lt;span class="Apple-style-span" style="color: #38761d;"&gt;setVMOption&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;My recommendation is that even if you do not want to log GC by default add the following params to your command line&amp;nbsp;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-Xloggc:c:\gc.log&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #38761d;"&gt;-XX:-PrintGC&amp;nbsp;-XX:+PrintGCTimeStamps&amp;nbsp;&lt;/span&gt;&lt;br /&gt;(Notice that the PrintGC has a - &amp;nbsp;sign before it)&lt;br /&gt;When you will need to analyze GC just turn on PrintGC and possible the PrintGCDetails.&lt;br /&gt;&lt;br /&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/3857007129715168662-8871874871747424700?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8871874871747424700/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8871874871747424700' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8871874871747424700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8871874871747424700'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/03/controlling-gc-logs-at-runtime.html' title='Controlling GC logs at runtime'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3601928445365385287</id><published>2011-03-03T11:50:00.001+02:00</published><updated>2011-03-03T11:54:39.764+02:00</updated><title type='text'>-XX:PrintFLSStatistics=1</title><content type='html'>When trying to understand what is going on with GC logging on G1GC. I found an undocumented JVM param that can really help when using CMS.&amp;nbsp;&lt;span class="Apple-style-span" style="color: #505050; font-family: monospace; font-size: 14px; line-height: 20px;"&gt;-XX:PrintFLSStatistics=1&amp;nbsp;&lt;/span&gt;will report extra data for every GC:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;8.790: [ParNew: 72703K-&amp;gt;6341K(76672K), 0.0067245 secs] 72703K-&amp;gt;6341K(816832K)After GC:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Statistics for BinaryTreeDictionary:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;------------------------------------&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Total Free Space: 94724096&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Max &amp;nbsp; Chunk Size: 94724096&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Number of Blocks: 1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Av. &amp;nbsp;Block &amp;nbsp;Size: 94724096&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Tree &amp;nbsp; &amp;nbsp; &amp;nbsp;Height: 1&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;After GC:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Statistics for BinaryTreeDictionary:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;------------------------------------&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Total Free Space: 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Max &amp;nbsp; Chunk Size: 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Number of Blocks: 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;Tree &amp;nbsp; &amp;nbsp; &amp;nbsp;Height: 0&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #274e13; font-size: x-small;"&gt;, 0.0068238 secs] [Times: user=0.06 sys=0.00, real=0.01 secs]&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This can really help when trying to understand CMS concurrent mode failure due to fragmentation&lt;br /&gt;&lt;br /&gt;Pity it is not reporting data in a single line though :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3601928445365385287?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3601928445365385287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3601928445365385287' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3601928445365385287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3601928445365385287'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/03/xxprintflsstatistics1.html' title='-XX:PrintFLSStatistics=1'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-2924857057582293202</id><published>2011-02-25T10:17:00.000+02:00</published><updated>2011-02-25T10:17:33.363+02:00</updated><title type='text'>JDK1.6.0_24 released</title><content type='html'>Nothing interesting though.... JDK1.6.0_23 included the latest version of VisualVM but this is old news by now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-2924857057582293202?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/2924857057582293202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=2924857057582293202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2924857057582293202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2924857057582293202'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/02/jdk16024-released.html' title='JDK1.6.0_24 released'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-770015336609862231</id><published>2011-02-25T10:16:00.000+02:00</published><updated>2011-02-25T10:16:05.876+02:00</updated><title type='text'>First impressions from G1GC</title><content type='html'>I was trying to see how G1GC will cope with an application that I am investigating.&lt;br /&gt;Here are my disappointing results:&lt;br /&gt;1. With JDK 1.6.0_20 G1GC is not reporting memory correctly via JMX. problem is solved in later jdks but I am not able at this stage to upgrade the JVM&lt;br /&gt;2. VisualVM is not reporting memory correctly with G1GC need to open a bug for this issue.&lt;br /&gt;3. I cannot find thorough documentation regarding what the GC logs mean (when using G1GC with -Xloggc)&lt;br /&gt;4. The application crashed every few minutes. Again this was&amp;nbsp;with &amp;nbsp;160_20 and I need to recheck with 160_24&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-770015336609862231?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/770015336609862231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=770015336609862231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/770015336609862231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/770015336609862231'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2011/02/first-impressions-from-g1gc.html' title='First impressions from G1GC'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-2928620641174542097</id><published>2010-07-12T18:05:00.000+03:00</published><updated>2010-07-12T18:05:23.049+03:00</updated><title type='text'>Java6u21 is released 4 days ago</title><content type='html'>That's good news &amp;nbsp;from &amp;nbsp;performance perspective since&amp;nbsp;it includes the latest VisualVM version (1.2.2)&lt;br /&gt;According to Oracle release notes this include the following functionality&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: 12px; margin-left: 13px; padding-left: 0px;"&gt;&lt;li style="list-style-image: url(http://java.sun.com/im/ul_bullet.gif); margin-left: 13px; padding-left: 0px;"&gt;HeapWalker performance improvements&lt;/li&gt;&lt;li style="list-style-image: url(http://java.sun.com/im/ul_bullet.gif); margin-left: 13px; padding-left: 0px;"&gt;VisualVM-Sampler performance improvements&lt;/li&gt;&lt;li style="list-style-image: url(http://java.sun.com/im/ul_bullet.gif); margin-left: 13px; padding-left: 0px;"&gt;BTrace4VisualVM plugin introduces&amp;nbsp;&lt;a href="http://kenai.com/projects/btrace/forums/forum/topics/2262-BTrace-1-1-Released)" style="color: black;"&gt;BTrace 1.1&lt;/a&gt;&lt;/li&gt;&lt;li style="list-style-image: url(http://java.sun.com/im/ul_bullet.gif); margin-left: 13px; padding-left: 0px;"&gt;Profiling engine bugfixes&lt;/li&gt;&lt;li style="list-style-image: url(http://java.sun.com/im/ul_bullet.gif); margin-left: 13px; padding-left: 0px;"&gt;Built on NetBeans Platform 6.8&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;It still not a full replacement to a commercial profiler but I hope it will be soon :-)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, FreeSans, Luxi-sans, 'Nimbus Sans L', sans-serif; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 12px;"&gt;&lt;br /&gt;&lt;/span&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/3857007129715168662-2928620641174542097?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/2928620641174542097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=2928620641174542097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2928620641174542097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2928620641174542097'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/07/java6u21-is-released-4-days-ago.html' title='Java6u21 is released 4 days ago'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3396756766703375803</id><published>2010-05-18T10:25:00.000+03:00</published><updated>2010-05-18T10:25:00.438+03:00</updated><title type='text'>Page file size on machines with large amounts of memory</title><content type='html'>There is a rule of thumb that page file size (and swap space partition) should be 1.5 times the physical memory of the machine. Now that we have 64 bit machines with 16-64GB of memory this looks like an absurd.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We do not want to reserve so much disk space&lt;/li&gt;&lt;li&gt;It does not make sense to rely so heavily on disk&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I found two nice references in the internet regarding Linux and Windows&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cyberciti.biz/tips/linux-swap-space.html"&gt;http://www.cyberciti.biz/tips/linux-swap-space.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/889654"&gt;http://support.microsoft.com/kb/889654&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So my new rule of thumb page file should not be more than 70% full&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; line-height: 16px;"&gt;&lt;table cellspacing="1" class="table" style="-webkit-box-sizing: border-box; background-attachment: initial; background-clip: initial; background-color: #7fbae2; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; border-bottom-width: 2px; border-left-width: 3px; border-right-width: 3px; border-top-width: 0px;"&gt;&lt;tbody style="-webkit-box-sizing: border-box;"&gt;&lt;tr style="-webkit-box-sizing: border-box;"&gt;&lt;td style="-webkit-box-sizing: border-box; background-attachment: initial; background-clip: initial; background-color: #f7f7ff; background-image: initial; background-origin: initial; background-position: initial initial; background-repeat: initial initial; font-size: 11px; padding-bottom: 5px; padding-left: 5px; padding-right: 5px; padding-top: 5px; vertical-align: top;"&gt;Paging File\\% Usage Peak _Total &amp;lt; 70%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3396756766703375803?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3396756766703375803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3396756766703375803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3396756766703375803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3396756766703375803'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/05/page-file-size-on-machines-with-large.html' title='Page file size on machines with large amounts of memory'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3250539770946002396</id><published>2010-05-12T20:43:00.002+03:00</published><updated>2010-05-12T20:43:52.873+03:00</updated><title type='text'>iPad Performance</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana, sans-serif; font-size: 11px; line-height: 17px;"&gt;Just&amp;nbsp;received&amp;nbsp;my new iPad and I must say that I really amazed by its performance. Everything is so snappy kudos to apple. I do want to understand how they were able to create this experience on such a device.&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: Verdana, sans-serif; font-size: 11px; line-height: 17px;"&gt;Can someone arrange me a meeting with Steve?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3250539770946002396?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3250539770946002396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3250539770946002396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3250539770946002396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3250539770946002396'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/05/ipad-performance.html' title='iPad Performance'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-9151609151386266898</id><published>2010-04-25T08:28:00.000+03:00</published><updated>2010-04-25T08:28:11.652+03:00</updated><title type='text'>Dangling Locks</title><content type='html'>Happy about Java not suffering from dangling pointers ? Think again the Java5 concurrency utils while very powerful looks like a language flaw:&lt;br /&gt;The following code is an example where a lock cannot be released anymore the thread which holds it is dead. Moreover there is no indication who is holding this lock ...... jstack won't help you......&lt;br /&gt;Oracle please fix it !!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;public class DanglingLock {&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;static ReadWriteLock l = new ReentrantReadWriteLock();&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public static void main(String [] args) throws InterruptedException &amp;nbsp;{&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Runnable r = new Runnable() {&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void run() {&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;l.writeLock().lock();&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try {&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread.sleep(20000);&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;} catch (InterruptedException ex) {&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Logger.getLogger(DanglingLock.class.getName()).log(Level.SEVERE, null, ex);&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;};&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Thread t = new Thread(r);&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;t.start();&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&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;Thread.sleep(5000);&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;l.writeLock().lock();&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;&lt;b&gt;&lt;i&gt;}&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-9151609151386266898?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/9151609151386266898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=9151609151386266898' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/9151609151386266898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/9151609151386266898'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/04/dangling-locks.html' title='Dangling Locks'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-2180743177911655927</id><published>2010-04-08T10:36:00.000+03:00</published><updated>2010-04-08T10:36:52.174+03:00</updated><title type='text'>1 gadget per year policy</title><content type='html'>Well as I am trying to&amp;nbsp;convince&amp;nbsp;myself that I really need an iPad I use the following arguments&lt;br /&gt;- I must try new technology&lt;br /&gt;- I must understand the hype around tablets&lt;br /&gt;&lt;br /&gt;and the most absurd argument is that I need a policy for buying gadgets...&lt;br /&gt;The policy is one gadget per year .....&lt;br /&gt;&lt;br /&gt;Sounds reasonable no ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-2180743177911655927?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/2180743177911655927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=2180743177911655927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2180743177911655927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2180743177911655927'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/04/1-gadget-per-year-policy.html' title='1 gadget per year policy'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-9100861908303885031</id><published>2010-04-04T11:48:00.000+03:00</published><updated>2010-04-04T11:48:45.926+03:00</updated><title type='text'>I really want an iPad but do I really need it ?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;It is cool I&amp;nbsp;fantasize reading books with it viewing movies on the go and browsing the internet in the park....&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;I am not sure i will continue using it after more than few weeks?&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Will I start carrying another device ? not sure.....&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;I guess that I will continue to hold my breath and wait for&amp;nbsp;Hebrew&amp;nbsp;keyboard, jailbreak and the 3G version....&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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/3857007129715168662-9100861908303885031?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/9100861908303885031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=9100861908303885031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/9100861908303885031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/9100861908303885031'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/04/i-really-want-ipad-but-do-i-really-need.html' title='I really want an iPad but do I really need it ?'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-7244487122935503499</id><published>2010-04-04T11:44:00.000+03:00</published><updated>2010-04-04T11:44:32.705+03:00</updated><title type='text'>JDK1.6.0_19 is released</title><content type='html'>No major news just a few bug fixes...&lt;br /&gt;BTW JDK1.6.0_18 included a new version of the VisualVM which is much more powerful and also includes a sampler..... so I was very anxious to see if 1.6.0_19 includes visualvm1.2.2 but it does not ....&lt;br /&gt;Never mind we can always download it directly from the website....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-7244487122935503499?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/7244487122935503499/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=7244487122935503499' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7244487122935503499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7244487122935503499'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/04/jdk16019-is-released.html' title='JDK1.6.0_19 is released'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8067883620747438636</id><published>2010-02-11T17:04:00.002+02:00</published><updated>2010-02-11T17:09:03.768+02:00</updated><title type='text'>AWS is offering consolidated billing system</title><content type='html'>It took them one year but finally......&lt;br /&gt;If you are a company and wanted to use AWS you every user needed to create an acoount and enter billing details.&lt;br /&gt;This is very cumbersome and does not enable centralized management and tracking of cloud costs.&lt;br /&gt;Since not it is going to be changed. You will be able to consolidate all your acoount and get aggregated report for your organization.&lt;br /&gt;I guess that now it will be also possible to limit an acoount budget according to the organization policy.....&lt;br /&gt;Kudos Amazon&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-8067883620747438636?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8067883620747438636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8067883620747438636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8067883620747438636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8067883620747438636'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2010/02/aws-is-offering-consolidated-billing.html' title='AWS is offering consolidated billing system'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-788801303651428527</id><published>2009-12-30T13:19:00.003+02:00</published><updated>2009-12-30T13:25:50.114+02:00</updated><title type='text'>Cloud era: Pay for your poor performance</title><content type='html'>I have read an interesting post which claims that in the cloud computing era poor performance directly converts to higher operational costs.&lt;a href="http://www.infoq.com/news/2009/11/Price-for-Performance"&gt; http://www.infoq.com/news/2009/11/Price-for-Performance&lt;/a&gt;&lt;br /&gt;I agree with this to some extent. Paying for machines is not exactly as paying for CPU but the general idea is interesting.&lt;br /&gt;Thinking about it a bit more it makes me wonder that it will be nice to be able to find the equilibrium point of performance investigation investment. The amount of money that you invest of performization should be less than the amount of time you loose for inefficiency.&lt;br /&gt;A new research area is born :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-788801303651428527?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/788801303651428527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=788801303651428527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/788801303651428527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/788801303651428527'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/12/cloud-era-pay-for-your-poor-performance.html' title='Cloud era: Pay for your poor performance'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8583041743446553239</id><published>2009-12-08T17:40:00.000+02:00</published><updated>2009-12-08T17:41:30.901+02:00</updated><title type='text'>diagnosis tools for JDK 1.6</title><content type='html'>A nice Sun document on diagnosis tools for JDK 1.6&lt;br /&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/monitoring/"&gt;http://java.sun.com/developer/technicalArticles/J2SE/monitoring/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-8583041743446553239?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8583041743446553239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8583041743446553239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8583041743446553239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8583041743446553239'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/12/diagnosis-tools-for-jdk-16.html' title='diagnosis tools for JDK 1.6'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-305264241543032012</id><published>2009-11-01T17:48:00.004+02:00</published><updated>2010-03-17T09:50:07.815+02:00</updated><title type='text'>KSE2 is around the corner</title><content type='html'>Hi,&lt;br /&gt;On the 17th of November the second Knowledge share event is going live.&lt;br /&gt;It will include 3 sessions:&lt;br /&gt;1. Fork/Join Framework&lt;br /&gt;2. What makes good performance&lt;br /&gt;3. Short stories on simple tools&lt;br /&gt;&lt;br /&gt;For more info and registration&lt;br /&gt;&lt;a href="http://www.performize-it.com/kse/kse2"&gt;http://www.performize-it.com/kse/kse2&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-305264241543032012?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/305264241543032012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=305264241543032012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/305264241543032012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/305264241543032012'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/11/kse2-is-around-corner.html' title='KSE2 is around the corner'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3879902148236372448</id><published>2009-09-12T21:06:00.002+03:00</published><updated>2009-09-12T21:14:18.582+03:00</updated><title type='text'>Mac OSX Snow leopard better performance</title><content type='html'>I have upgraded my Macbook to Snow Leopard this weekend and indeed experienced  better performance. I have bumped into an interesting article which explains why : (&lt;a href="http://www.appleinsider.com/articles/08/09/04/road_to_snow_leopard_twice_the_ram_half_the_price_64_bits.html"&gt;follow link&lt;/a&gt; )&lt;br /&gt;To make short story shorter Mac maps 32bit processes to two 4GB address spaces one for user mode and one for kernel mode. As a result any kernel mode system call will require a TLB flush.&lt;br /&gt;Windows by limiting user address space to 2GB and kernel address space to 2GB do not suffer from this problem (but suffer from much lower memory limit). Snow leopard is full 64 bit which solves this issue. User mode and kernel mode address space share the same TLB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3879902148236372448?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3879902148236372448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3879902148236372448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3879902148236372448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3879902148236372448'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/09/mac-osx-snow-leopard-better-performance.html' title='Mac OSX Snow leopard better performance'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-7532625091443662117</id><published>2009-09-03T10:50:00.002+03:00</published><updated>2009-09-03T10:56:12.679+03:00</updated><title type='text'>A few comments on my previous post</title><content type='html'>When you are able to RDP to console session. Most of the times you will  be able to connect to the   process if you will give it the pid from the windows task manager.&lt;br /&gt;jps which lists only java processes will not work. However jconsole -p &lt;pid&gt; will. So there are cases where this technique is not required.&lt;br /&gt;&lt;br /&gt;However there are cases when you are not able to connect to the console session. In that case enabling interaction with console option will not help but you can still communicate with files.&lt;br /&gt;Just write a batch file and execute it with cmd.exe -C &lt;batch&gt;&lt;br /&gt;you can redirect your input and output to files so you will be still able to communicate with the shell&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-7532625091443662117?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/7532625091443662117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=7532625091443662117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7532625091443662117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7532625091443662117'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/09/few-comments-on-my-previous-post.html' title='A few comments on my previous post'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3719008829716321518</id><published>2009-07-06T14:53:00.008+03:00</published><updated>2009-07-06T15:55:56.971+03:00</updated><title type='text'>A neat way to monitor windows services</title><content type='html'>The JDK supplies a very impressive toolchest which enables you to monitor the JVM(&lt;br /&gt;jconsole, jps, jmap,jvisualvm etc...). There are also other tools such as BTrace which can attach to the JVM and solve performance problems.&lt;br /&gt;On UNIX you only need to use su or sudo and act as the user running the JVM. Doing that you can attach to it and apply all commands.&lt;br /&gt;In Microsoft Windows the situation is more complicated. The service processes run under a different user and in another session and you are not able to connect to them.&lt;br /&gt;&lt;br /&gt;But do not panic:-)  I am suggesting here a simple workaround.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;Download and install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9D467A69-57FF-4AE7-96EE-B18C4790CFFD&amp;amp;displaylang=en"&gt;Resource Kit Tools&lt;/a&gt; from Microsoft. (The 2003 version will also run on Windows XP). Didn't try Vista/2008 but then again who uses Vista.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;Run the following command:&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;%RESKIT_HOME%\Tools\Instsrv.exe" SrvCMD "%RESKIT_HOME%\Tools\Srvany.exe"&lt;/span&gt;&lt;br /&gt;It will create a service named SrvCMD (in case you have such a service use a different name)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step 3:&lt;/span&gt;&lt;br /&gt;Open services.msc and update the service properties to run manually. Check "allow service interact with desktop" box.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step4:&lt;/span&gt;&lt;br /&gt;Execute &lt;span style="color: rgb(51, 51, 255);"&gt;regedit.&lt;/span&gt;&lt;br /&gt;Open the key &lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SrvCMD&lt;/span&gt;&lt;br /&gt;Add a  sub-key named &lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;Parameters&lt;/span&gt;&lt;br /&gt;To this sub-key add a string value named &lt;span style="color: rgb(51, 51, 255);"&gt;Application&lt;/span&gt;. Its value will be the name of the executable you want to run. In our case &lt;span style="font-style: italic; color: rgb(51, 51, 255);"&gt;c:\WINDOWS\system32\cmd.exe&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Step5:&lt;/span&gt;&lt;br /&gt;Note: If you are connecting with remote desktop make sure you are connecting with &lt;span style="font-style: italic; color: rgb(51, 102, 255);"&gt;/console&lt;/span&gt; parameter (otherwise you will not see the command window)&lt;br /&gt;Start the service.&lt;br /&gt;A window with command prompt running in the session of the service will be opened.&lt;br /&gt;jps will now discover your JVM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3719008829716321518?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3719008829716321518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3719008829716321518' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3719008829716321518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3719008829716321518'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/07/neat-way-to-monitor-windows-services.html' title='A neat way to monitor windows services'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-6980652620997491844</id><published>2009-07-03T11:26:00.003+03:00</published><updated>2010-03-17T09:54:20.661+02:00</updated><title type='text'>BTrace session slides</title><content type='html'>BTrace session is over.&lt;br /&gt;I worked very hard preparing it though I think I needed more time for working on the running examples and integrating them seamlessly with the presentation.&lt;br /&gt;It was a fascinating experience for me.It is the first time for me that I am arranging a public session and I am sure that more will come.&lt;br /&gt;37 Attendees(out of max 50 available seats) two and a half hours of covering BTrace.&lt;br /&gt;The responses were very positive. People were very enthusiastic about the tool.&lt;br /&gt;I have published the slides of two presentations from the event in my web site:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://docs.google.com/present/embed?id=dgpbh6gd_0hp6ssmc5"&gt;BTrace Intro&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://docs.google.com/present/embed?id=dgpbh6gd_19nqq4zcr"&gt;BTrace In Depth &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;The participants of the event are entitled to participate in a lottery upon submitting a final &lt;a href="http://www.scalablej.com/kse/btrace/final-exercise"&gt;exercise&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-6980652620997491844?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/6980652620997491844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=6980652620997491844' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/6980652620997491844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/6980652620997491844'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/07/btrace-session-slides.html' title='BTrace session slides'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-9191590241486429502</id><published>2009-06-20T00:29:00.002+03:00</published><updated>2009-06-20T00:36:00.582+03:00</updated><title type='text'>10 Days left</title><content type='html'>It is 10 days away. My BTrace session. I am so excited about it.&lt;br /&gt;This the first event I am organizing and I hope that ppl will be tolerant toward any organization problems that may occur....&lt;br /&gt;I have just discovered to that my BTrace post was cited in the BTrace project &lt;a href="https://btrace.dev.java.net/"&gt;homepage&lt;/a&gt; :-)&lt;br /&gt;And today while working on my presentation I discovered that BTrace do not on my Mac (till now used it only on Windows machines)&lt;br /&gt;Browsing the web a bit I found a post by &lt;a href="http://kensipe.blogspot.com/2009/02/btrace-fix-on-mac.html"&gt;Ken Sipe&lt;/a&gt; who already solved the problem.&lt;br /&gt;Downloaded his patched version and bang it worked !!!!!&lt;br /&gt;Lucky me  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-9191590241486429502?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/9191590241486429502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=9191590241486429502' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/9191590241486429502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/9191590241486429502'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/06/10-days-left.html' title='10 Days left'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-4933864922524393356</id><published>2009-06-03T11:45:00.005+03:00</published><updated>2010-03-17T09:57:11.492+02:00</updated><title type='text'>ScalableJ First Knowledge Share Event</title><content type='html'>I have been thinking about building up an event by myself for a long time and this idea has finally came to life. I am going to give a lecture on BTrace on the 1st of July in Petah Tikva,Israel&lt;br /&gt;Registration is free of charge.&lt;br /&gt;More information can be found at &lt;a href="http://www.performize-it.com/training/kse/kse1"&gt;http://www.performize-it.com/training/kse/kse1&lt;/a&gt;&lt;br /&gt;You are welcome to participate......&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-4933864922524393356?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/4933864922524393356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=4933864922524393356' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4933864922524393356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4933864922524393356'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/06/scalablej-first-knowledge-share-event.html' title='ScalableJ First Knowledge Share Event'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-7652480109507864553</id><published>2009-05-31T13:19:00.002+03:00</published><updated>2009-05-31T13:28:18.240+03:00</updated><title type='text'>JDK 1.6.0_14</title><content type='html'>Well it appears that this revision is not a one to ignore if you care about performance (and you have the guts of an early adapter:-) The "small" revision update is not small at all and contains 3 important performance improvements:&lt;br /&gt;1. The long anticipated G1 garbage collector&lt;br /&gt;2. Escape analysis&lt;br /&gt;3. Compressed OOPs&lt;br /&gt;&lt;br /&gt;I will elaborate on these features in my next posts.... for now you may look at &lt;a href="http://java.sun.com/javase/6/webnotes/6u14.html"&gt;http://java.sun.com/javase/6/webnotes/6u14.html&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;What does this say about JDK1.7 ? Down porting features before 1.7 is released...... makes you wonder is 1.7 going to be Sun's Vista?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-7652480109507864553?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/7652480109507864553/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=7652480109507864553' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7652480109507864553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7652480109507864553'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/05/jdk-16014.html' title='JDK 1.6.0_14'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-4852141964767397907</id><published>2009-05-27T09:18:00.003+03:00</published><updated>2009-05-27T09:27:49.932+03:00</updated><title type='text'>BTrace the ultimate JVM probe</title><content type='html'>Hi,&lt;br /&gt;I have been working with BTrace in the last few months and the more I use it the more I appreciate it. BTrace enables you to write a small java class that will instrument you java application on the fly and will give you ultimate flexibiliy to pin-point the requested information.&lt;br /&gt;It can help in debugging/ profiling/ deadlock analysis and solving other  stability problems&lt;br /&gt;I am going to give a session 2.5 hours session on the 1/7 in Israel(Petah Tikva). Details will follow..... If you want to attend send me an email to haim.yadid@scalablej.com&lt;br /&gt;Here is a tricky example which will help you identify where in the code a you write a certaion message to stdout..... enjoy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;package com.scalablej.btrace;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;import com.sun.btrace.annotations.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;import static com.sun.btrace.BTraceUtils.*;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;@BTrace public class PrintlnLocator {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;&lt;/span&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;    @OnMethod(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;            clazz = "java.io.PrintStream", &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;            method = "println", &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;            location = @Location(value = Kind.ENTRY))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;    public static void onPrint(Object a, String l) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;        boolean b = compare(&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;                get(field(classForName("java.lang.System"), "out")), a);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;        if (b) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;            println(l);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;            jstack();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;        }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(153, 51, 153);"&gt;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-4852141964767397907?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/4852141964767397907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=4852141964767397907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4852141964767397907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4852141964767397907'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/05/btrace-ultimate-jvm-probe.html' title='BTrace the ultimate JVM probe'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-4833971373978434009</id><published>2009-04-21T13:50:00.004+03:00</published><updated>2009-04-21T14:16:16.960+03:00</updated><title type='text'>Utilizing the Cloud for Performance Validation</title><content type='html'>Yesterday I gave a lecture to the Israeli Association of Grid Technologies (IGT) as part of the cloud computing work group. I was discussing the benefits of executing performance lab for the purpose of load testing inside the cloud (opposed to purchasing required hardware).&lt;br /&gt;You can find the presentation in my website &lt;a href="http://www.scalablej.com/cloud-computing"&gt;http://www.scalablej.com/cloud-computing&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-4833971373978434009?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/4833971373978434009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=4833971373978434009' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4833971373978434009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4833971373978434009'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/04/utilizing-cloud-for-performance.html' title='Utilizing the Cloud for Performance Validation'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8286029155176107820</id><published>2009-04-13T18:55:00.002+03:00</published><updated>2009-04-13T19:16:23.968+03:00</updated><title type='text'>IGT cloud computing Workgroup</title><content type='html'>Hi&lt;br /&gt;Next Monday (20-Apr-09 14:00-17:00 IDT) I am going to present a case study which will discuss the benefits of performing application load test in the cloud. My presentation will take place in IGT offices in Herzelia and will be part of a meeting of the Israeli cloud computing work group along with two other sessions of Nati Shalom CTO of GigaSpaces and Moshe Kaplan CEO of Rocketier. Registration is free just send an email to info@grid.org.il.&lt;br /&gt;For more information on my session and other session in the WG meeting follow this link&lt;br /&gt;&lt;a href="http://www.grid.org.il/?CategoryID=384&amp;amp;ArticleID=137&amp;amp;Page=1"&gt;http://www.grid.org.il/?CategoryID=384&amp;amp;ArticleID=137&amp;amp;Page=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope to see you there....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-8286029155176107820?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8286029155176107820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8286029155176107820' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8286029155176107820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8286029155176107820'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/04/igt-cloud-computing-workgroup.html' title='IGT cloud computing Workgroup'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-7773446696516775233</id><published>2009-03-17T17:04:00.002+02:00</published><updated>2009-03-17T17:10:21.950+02:00</updated><title type='text'>Nice enhancement of JDK1.6.0_14</title><content type='html'>From JDK1.6.0_14 a stack trace dump is added to a hprof memory snapshot this can help profilers display thread and stack is shown for GC roots of types "Stack Local" and "JNI Local".&lt;br /&gt;Yourkit 8.0.3 already utilizes this feature.&lt;br /&gt;Nice!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-7773446696516775233?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/7773446696516775233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=7773446696516775233' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7773446696516775233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7773446696516775233'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2009/03/nice-enhancement-of-jdk16014.html' title='Nice enhancement of JDK1.6.0_14'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-2929983850912922329</id><published>2008-12-16T23:33:00.002+02:00</published><updated>2008-12-16T23:48:51.085+02:00</updated><title type='text'>Yet another reason to move to JDK 1.6</title><content type='html'>My first production memory leak analysis with Java 1.6 was almost a very pleasant experience.&lt;div&gt;While in previous versions of java I  needed to restart the JVM and set appropriate profiler command line option,  Java 6 comes with a built in alternative.  jmap which was not available for Windows distributions is now available for use. Taking a memory snapshot is a point and click task:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;jmap -dump:format=b,file=dump.hprof &lt;pid&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Take  the hprof dump generated and use you favorite profiler to analyze it.&lt;/div&gt;&lt;div&gt;If you are only interested in a short summary of memory usage by class:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;jmap -histo &lt;pid&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, why was it only an almost pleasant experience ? Because you need to make sure that you are connected to the same windows session as the process you are trying to dump. If you are using terminal services make sure you use the /console command line option, otherwise jmap will not work. Beats me why.. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-2929983850912922329?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/2929983850912922329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=2929983850912922329' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2929983850912922329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2929983850912922329'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/12/yet-another-reason-to-move-to-jdk-16.html' title='Yet another reason to move to JDK 1.6'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-2143447596513585339</id><published>2008-12-03T05:18:00.009+02:00</published><updated>2008-12-03T10:09:37.378+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IaaS'/><category scheme='http://www.blogger.com/atom/ns#' term='summit'/><category scheme='http://www.blogger.com/atom/ns#' term='cloud computing'/><title type='text'>10 People  - a Billion USD  revenue</title><content type='html'>I have been attending this week to the"World summit of cloud computing" which was quite an impressive conference compared to other Israeli conferences I have been to with representatives from Google,HP,Intel,Amazon,EBay, Yahoo,SUN, Salesforce, GridGain, Forrester,GigaSpaces, MerrilLynch and more. Each one of those vendor has a different definition and point of view so after those two days I am ready to give my own definition and what it means to me.&lt;br /&gt;So, Cloud computing is a deployment option for your application which has the following four characteristics:&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Outsourced &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Your run your stuff on other people  machines and infrastructures(IaaS). These resources can be conזsumed either from the the intranet for small large enterprises and government use or reside in the in the Internet for small/midsized companies. But the main issue here is that all you pay for the infrastructure in that case is money.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;Economical &lt;/span&gt;&lt;br /&gt;Using this deployment option should save you money and possibly a lot of money.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reduced CAPEX:, meaning money you will need to invest upfront inoder to support the expected and unexpected changes in capacity.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Reduced OPEX: Let cloud providers do what they do the best, maintain large machine infrastructure. Hopefully (with the right amount of competition)  that will reduce your IT OPEX.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New financial model: All the ?aaS concept is presuming a different(and more fair) revenue model compared to what we are used to in the traditional software industry  you only pay for the resources  you use no payment upfront and not commitment for long term.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; &lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;Elastic &lt;/span&gt;&lt;br /&gt;You are able to adjust seamlessly the amount of infrastructure you consume. This helps you handle peaks more efficiently. You no longer need to choose between  compromising on your SLA in peak times or let your servers rot in the cellars when you really don't need them.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;SelfService &lt;/span&gt;&lt;br /&gt;You as a developer(and I am intentionally focusing on developers)  are able to allocate and deallocate resources by yourself through an  API no need to sign forms no paperwork. You can write on use software which will do the job for you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And not to my thoughts:&lt;br /&gt;So I have a crazy vision regarding this new concepts what I see in my mind is a billion USD internet  company with a size of 10 people which altogether  bring unique (probably patented) value and all their job is to orchestrate outsourced resources to the benefit of the company.&lt;br /&gt;A CEO - orchestrating vision and execution with a set of VAs&lt;br /&gt;VP sales   - orchestrate sales operation through an effective network affiliation&lt;br /&gt;VP infrastructure - manages the application in the cloud&lt;br /&gt;VP support - orchestrate outsourced call center and&lt;br /&gt;VP finance&lt;br /&gt;VP R&amp;amp;D -&lt;br /&gt;4 developers - developing only core business logic consuming open source projects for the other stuff.&lt;br /&gt;&lt;br /&gt;I know it is a bit extreem but I don't care I am sure it will happen one day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-2143447596513585339?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/2143447596513585339/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=2143447596513585339' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2143447596513585339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/2143447596513585339'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/12/10-people-billion-usp.html' title='10 People  - a Billion USD  revenue'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-4446214207229193556</id><published>2008-11-24T08:35:00.002+02:00</published><updated>2008-11-24T08:41:38.331+02:00</updated><title type='text'>IGT 2008 next week</title><content type='html'>The world summit of cloud computing is taking place in Israel next week.&lt;br /&gt;I have big expectations toward this summit as I  believe that the future is in the cloud.&lt;br /&gt;This is not an affiliation link :-) you are welcome to register I'd love to see you there!&lt;br /&gt;&lt;a href="http://www.cloudcomputing.org.il/index.html"&gt;http://www.cloudcomputing.org.il/index.html&lt;/a&gt;&lt;br /&gt;&lt;a id="publishButton" class="cssButton" href="javascript:void(0)" onclick="if (this.className.indexOf(&amp;quot;ubtn-disabled&amp;quot;) == -1) {var e = document['stuffform'].publish;(e.length) ? e[0].click() : e.click(); if (window.event) window.event.cancelBubble = true; return false;}"&gt;&lt;div class="cssButtonOuter"&gt;&lt;div class="cssButtonMiddle"&gt;&lt;div class="cssButtonInner"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-4446214207229193556?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/4446214207229193556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=4446214207229193556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4446214207229193556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4446214207229193556'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/11/igt-2008-next-week.html' title='IGT 2008 next week'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3912391456965546969</id><published>2008-11-23T20:45:00.006+02:00</published><updated>2008-11-23T21:15:14.311+02:00</updated><title type='text'>Last post Recall or why use HTTP1.1</title><content type='html'>Today I saw that Ford are recalling 1000 cars due to problems in steering wheel liquid. This makes me feel a bit more comfortable about the need to take back what I said just few days ago :-).&lt;div&gt;So why do I need to recall the post. Not because SSL connection establishment is not expensive. It is indeed. The issue is that HTTP1.1 (opposed to HTTP1.0)  can pool the connections and reuse them for later requests thus diminishing the effect of HTTPS latency).&lt;/div&gt;&lt;div&gt;So why the Apache web server was not behaving well (and put me into confusion)? Configuration .....&lt;/div&gt;&lt;div&gt;The AWS was configured to use HTTP1.0 for HTTPS connection under Internet explorer.&lt;/div&gt;&lt;div&gt;I did not understand yet why(an issue for a later post)  is it so, probably bugs in older versions of IE. Anyway commenting out the following lines in httpd-ssl.conf  brings back the missing .1:&lt;/div&gt;&lt;div&gt;BrowserMatch ".*MSIE.*" \&lt;/div&gt;&lt;div&gt;   nokeepalive ssl-clean-shutdown \&lt;/div&gt;&lt;div&gt;   downgrade-1.0 force-response-1.0&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And voila after that only one roundtrip for SSL requests.....&lt;/div&gt;&lt;div&gt;Absolutely great :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&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/3857007129715168662-3912391456965546969?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3912391456965546969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3912391456965546969' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3912391456965546969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3912391456965546969'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/11/last-post-recall-or-why-use-http11.html' title='Last post Recall or why use HTTP1.1'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-156143423078650831</id><published>2008-11-18T20:07:00.003+02:00</published><updated>2008-11-23T21:17:39.305+02:00</updated><title type='text'>Speed of light vs SSL</title><content type='html'>&lt;div&gt;(Please see next post for update)&lt;/div&gt;I have been trying to measure WAN  efffect over an application I am working on. Due to a bug the application was running in SSL and I was quite surprised by the results.&lt;br /&gt;After investigating it a little I want to share with you the following information. https (SSL) requests to the server involve two extra round trips for certificate authentication and key exchange. As a result a short HTTP request will require 3 times the network round trip time (6 times the latency). For example if latency is 90 ms and server time is 20ms https request will be 90*6+20= 560ms. While an http request will require 200ms. Quite impressive difference.&lt;br /&gt;Saying that it is extremely important to reduce number of https requests to a server combining https requests is 3 times more important than regular http requests.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-156143423078650831?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/156143423078650831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=156143423078650831' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/156143423078650831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/156143423078650831'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/11/speed-of-light-vs-ssl.html' title='Speed of light vs SSL'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8646278647616300860</id><published>2008-06-24T15:51:00.004+03:00</published><updated>2008-06-24T15:52:59.647+03:00</updated><title type='text'>TSSJS Day 3</title><content type='html'>&lt;span&gt;I want to cover two sessions from the third day&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;:&lt;br /&gt;&lt;br /&gt;The busy Java developer’s Guide to Scala&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Ted Newman is definitely a charismatic presenter. With great passion he reviewed basic functionality of Scala DSL. Well Scala is a functional language and after the session I really want to learn it.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Performance Tuning a web shop with open source tools&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;Dr. Jeroen Borgers  showed how performance improvement process can be done using Open Source tools. He was using JMeter (while I usually use LoadRunner) for load generation.  Jprobe for profiling (I prefer YourKit BTW). JAMon for continuous monitoring (I used SiteScope commercial tool). For reporting purposes they wrote their own tool and placed on SourceForge (JaRep).&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/3857007129715168662-8646278647616300860?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8646278647616300860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8646278647616300860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8646278647616300860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8646278647616300860'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/busy-java-developers-guide-to-scala-ted.html' title='TSSJS Day 3'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3654591293746090939</id><published>2008-06-24T15:49:00.001+03:00</published><updated>2008-06-24T15:50:39.781+03:00</updated><title type='text'>TSSJS Day 2</title><content type='html'>I want to cover 3 sessions on the secion day&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Languages-Oriented Programming: Shifting Paradigms &lt;/span&gt;&lt;br /&gt;Computer languages evolution enables us to pave over disturbing problems (e.g. GC as a mechanism to pave over error-prone memory allocation, Neal Ford introduced a very important observation.. One of the most powerful aspects in Java platform is the community and the amount of open source frameworks. This creates a new problem to pave over. Each framework has its own jargon and adapting this to the java language leads to a complicated syntax which usually is very wet (not DRY – Don’t Repeat Yourself). Niel offer the use of DSLs to approach this problem. In other words frameworks will be transformed to a carefully designed DSL. AntLR as a lexical analyzer and environments like Jetbrains MPS can help reaching this with less efforts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Extreme Transaction Processing, Low latency and performance&lt;/span&gt;&lt;br /&gt;John Davis a banking expert gave a startling session on design criteria in the online trading arena. In this world a 1ms delay in processing a message can lead to losses of $100M. As a result for example banks try to locate the trading infrastructure as close as possible the trading backbone (usually in London)  in order to reduce latency.  In addition GC can be a real problem we are used to think of GC taking 200ms as something reasonable but again it is x200 from the 1ms  threshold. You do not want to loose money on GC. This leads to weird solutions such as restarting the VM before the first GC and redirecting to a different cluster member in the meanwhile. Another point mentioned is that traditional RDBMS are not capable of handling tens of thousands of transaction on a reasonable price. The solutions will be to use in memory databases or caching mechanisms (e.g. GigaSpaces, Oracle Coherence, Terracotta etc… )&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Concurrency and High Performance &lt;/span&gt;&lt;br /&gt;Kirk Pepperdine session had an important punch-line. Processors clock speed is stuck at the 3Ghz boundary and this situation is not likely to change in the near future. CPU vendors are going to achieve Moore’s law by doubling the number of cores every 18 months. This is a fact developers can’t afford to ignore. Leading to the inevitable conclusion (punch-line ahead) Is your application ready to double it’s concurrency in the next 18 months?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3654591293746090939?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3654591293746090939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3654591293746090939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3654591293746090939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3654591293746090939'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/tssjs-day-2.html' title='TSSJS Day 2'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-8375910248943081747</id><published>2008-06-24T15:30:00.003+03:00</published><updated>2008-06-24T15:53:19.780+03:00</updated><title type='text'>The inevitable delay</title><content type='html'>&lt;span&gt;A professional blogger will never let this happen. I admit that as a newbie when my wife joined me I preferred traveling and not blogging… Here is a link to the &lt;a href="http://picasaweb.google.com/haim.yadid/Prague"&gt;pictures&lt;/a&gt;. When I came back to Israel I was dead tired. So I continue to write only now (I do not regret it though)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-8375910248943081747?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/8375910248943081747/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=8375910248943081747' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8375910248943081747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/8375910248943081747'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/inevitable-delay.html' title='The inevitable delay'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-5814180654605493826</id><published>2008-06-22T08:14:00.002+03:00</published><updated>2008-06-22T08:28:51.661+03:00</updated><title type='text'>Yourkit 7.5 is released</title><content type='html'>Yourkit is my favorite profiler. It is a bit of old news but I am happy to hear that &lt;a href="http://www.yourkit.com/changes/index.jsp"&gt;Yourkit 7.5&lt;/a&gt; is released (on the 22-May-08). It includes of usability improvements and bug fixes. The most important thing I think is the CPU measurements for stack trace snapshots. It can actually show you which treads consume CPU before starting to profile. Previously I used intrnal tools for such purposes... I did not try this feature yet and I wonder if it can be used with out configuration of the profiler agent (great value for production)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-5814180654605493826?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/5814180654605493826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=5814180654605493826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/5814180654605493826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/5814180654605493826'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/yourkit-75-is-released.html' title='Yourkit 7.5 is released'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-6929109044800860775</id><published>2008-06-19T10:47:00.006+03:00</published><updated>2008-06-19T11:17:39.648+03:00</updated><title type='text'>TSSJS day 1</title><content type='html'>&lt;o:smarttagtype style="color: rgb(51, 51, 255); font-family: arial;" namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="City"&gt;&lt;/o:smarttagtype&gt;&lt;o:smarttagtype style="color: rgb(51, 51, 255); font-family: arial;" namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="place"&gt;&lt;/o:smarttagtype&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: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:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&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" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if !mso]&gt;&lt;object classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id="ieooui"&gt;&lt;/object&gt; &lt;style&gt; st1\:*{behavior:url(#ieooui) } &lt;/style&gt; &lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face  {font-family:Wingdings;  panose-1:5 0 0 0 0 0 0 0 0 0;  mso-font-charset:2;  mso-generic-font-family:auto;  mso-font-pitch:variable;  mso-font-signature:0 268435456 0 0 -2147483648 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal  {mso-style-parent:"";  margin:0cm;  margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:12.0pt;  font-family:"Times New Roman";  mso-fareast-font-family:"Times New Roman";} @page Section1  {size:612.0pt 792.0pt;  margin:72.0pt 90.0pt 72.0pt 90.0pt;  mso-header-margin:36.0pt;  mso-footer-margin:36.0pt;  mso-paper-source:0;} div.Section1  {page:Section1;} --&gt; &lt;/style&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-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:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p  style="color: rgb(51, 51, 255);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;A: Beautiful&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 153, 0);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;B: Who?&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(51, 51, 255);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;A: The City.&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 153, 0);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;B: Which city?&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(51, 51, 255);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;A: &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Prague&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 153, 0);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;B: So why don’t you say &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Prague&lt;/st1:place&gt;&lt;/st1:city&gt;? Why are you going around and around?&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(51, 51, 255);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;A: Well, since I have got here I have an unstoppable urge to stroll in the beautiful streets.&lt;/span&gt;&lt;/p&gt;  &lt;p  style="color: rgb(0, 153, 0);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;B: So why don’t you?&lt;/span&gt;&lt;/p&gt;&lt;p  style="color: rgb(0, 153, 0);font-family:arial;" class="MsoNormal"&gt;&lt;span style="color: rgb(51, 51, 255);font-size:100%;" &gt;A: Well....&lt;/span&gt;&lt;/p&gt;&lt;p  style="color: rgb(0, 153, 0);font-family:arial;" class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;I have landed in Prague Yesterday in 08:45 directly into the conference. (Comment: Try to avoid these scenarios as much as you can, I have been dead tired all day long). To the conference I have arrived  two hours late and missed the first two sessions &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style=""&gt;:-(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;  &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;While I really want to share as much knowledge as I can I am reluctant of writing long descriptions and summaries on sessions. A lecture heard can enlighten one’s mind but it is hard to transfer the essence of this enlightenment to a blog . Therefore, I am going to share with you a single most important piece of information I took with me from sessions.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;The two most effective sessions I did attend on day 1 are (Drums !!!!):&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Monitoring Management and Troubleshooting in the Java SE6 Platform&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p  class="MsoNormal" style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://blogs.sun.com/jmxnetbeans/"&gt;Jean-Francois Denis&lt;/a&gt; from SUN gave a very interesting session on JDK 6 new JMX abilities and tools. The lecture which started with the very basics did move to more advanced issues. The most useful piece of information from my point of view is the &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="https://visualvm.dev.java.net/"&gt;VisualVM&lt;/a&gt;. A real open source &lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;lightweight Java profiler!!&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;Java Performance Tooling&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;span style=";font-family:&amp;quot;;font-size:100%;"  &gt;&lt;a href="http://www4.java.no/web/show.do?page=67;303&amp;amp;articleid=5474"&gt;Dr Holly Cummins&lt;/a&gt;  &lt;span style=""&gt;&lt;/span&gt; from IBM is a very colorful person and a funny lecturer. She gave a nice introductory session on performance troubleshooting. Holly exposed me to the term ‘lock-bound’ which is a brilliant terminology for saying ‘Well we use locking mechanism extensively and &lt;span style=""&gt; &lt;/span&gt;there is a lot of contention on these locks… this is why our application sucks’. From this lecture I am have learned that IBM have set of nice free tools which one can use even if &lt;span style=""&gt; &lt;/span&gt;he is not using IBM JVM.Follow this &lt;a href="http://www.ibm.com/developerworks/java/library/j-ibmtools2/index.html"&gt;link&lt;/a&gt; for more information.&lt;!--[endif]--&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-6929109044800860775?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/6929109044800860775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=6929109044800860775' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/6929109044800860775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/6929109044800860775'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/tssjs-day-1.html' title='TSSJS day 1'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-4003608194356566263</id><published>2008-06-18T05:18:00.003+03:00</published><updated>2008-06-18T05:24:06.800+03:00</updated><title type='text'>TSSJS</title><content type='html'>Hi,&lt;br /&gt;I am on my way to TSSJS. This is the first time I am attending this conference and I am really thrilled  as I heard great deal about it.&lt;br /&gt;I will update my blog during the conference whenever I will have something interesting to say :-)&lt;br /&gt;If you attend the conference come and say hello :-)&lt;br /&gt;&lt;br /&gt;I have a flight to catch....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-4003608194356566263?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/4003608194356566263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=4003608194356566263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4003608194356566263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/4003608194356566263'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/tssjs.html' title='TSSJS'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-6339470720779831407</id><published>2008-06-09T03:46:00.007+03:00</published><updated>2008-06-09T04:38:59.612+03:00</updated><title type='text'>Client side Memory Leaks IE and GWT - A practical guide</title><content type='html'>By now I guess that you read the previous post and you are eager to get some practical knowledge.&lt;br /&gt;So I will summarize my knowledge regarding  this issue. While I agree it is a bit shallow it is much better than nothing at all.&lt;br /&gt;Tools like IESieve and IEdrip proven to be inefficient when coming to GWT leaks the code is too big for them and the transformation from Java to JS complicates things.&lt;br /&gt;I will be more that delighted to be proven an idiot, if someone have a better (proven) approach please let me know.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code Review&lt;/span&gt;&lt;br /&gt;When coming to solve /prevent memory leaks the best way will always be code review. Hence I will give a list of guidelines for reviewing GWT code:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;First list of guidelines Stating the obvious:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Avoid writing JSNI code. Google made quite a good job in writing "almost" leak free it is so easy to ruin it if you do not know what you are doing. Remember every JSNI code you write will lower your productivity.&lt;/li&gt;&lt;li&gt;Do not use the DOM.* methods (except the setStyle... which are safe) . Manipulating the DOM yourself will lead you directly toward a memory leak.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-style: italic;"&gt;Second list of guidelines - less obvious&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Static variables containing(even indirectly) references to widgets and dom objects may cause a leak.&lt;/li&gt;&lt;li&gt;According to Google it should not happen :-) but in some cases event listeners may leak. unregistered them when window unloads.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lion in the desert approach &lt;/span&gt;&lt;br /&gt;When code review by it self is insufficient, the desperate developer should try the following approach. As stated in the previous post when a memory leak in GWT occur the entire JavaScript is locked in the memory. This will lead to a huge memory leak (megabytes in large modules). This major drawback which forces us to deal with memory leaks is also our savior. Since the memory leak is so evident it is possible to defferentiate between cases where it is existant and cases where it is eliminated. Track the VM size of the IE process  while refreshing the page for several times. If the VM size inceases dramatically you have got a memory leak. Vice versa, memory do not increase constantly memory leak is solved.&lt;br /&gt;Saying that all you need to do is comment out pieces of code until memory leak is eliminated.&lt;br /&gt;&lt;br /&gt;This process is not easy nor fun some tips to improve its effectiveness:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Memory leaks are ilusive sometimes removing an irellevant piece of code will stop the memroy leak. As a result  you should try to reach to the smallest peice of code which is still leaking before eliminating it. This will ensure you do not shoot at the wrong target .&lt;/li&gt;&lt;li&gt;Work directly on javascript files. It takes some experitse to be able to understand what you are doing but it worth it. GWT comiplation phase is long and working directly on the JS file shortens the search cycle dramatically.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Thats all folks :-)&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-6339470720779831407?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/6339470720779831407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=6339470720779831407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/6339470720779831407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/6339470720779831407'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/06/client-side-memory-leaks-ie-and-gwt.html' title='Client side Memory Leaks IE and GWT - A practical guide'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-280946024760645795</id><published>2008-05-30T01:35:00.011+03:00</published><updated>2008-06-09T04:01:37.004+03:00</updated><title type='text'>Client side Memory Leaks IE and GWT - Introduction</title><content type='html'>I believe that software development should be fun. This is why for a long time I avoided the wild world of client side and JavaScript.  Even though there is a big traction toward AJAX and WEB2.0 I am still not convinced that a group of average developers  can develop a large scale, maintainable, enterprise ready and long lasting project based on this technology. JavaScript in just not that kind of language and the freakishly incompatible   Browsers  world which do not supply comprehensive set of monitoring tools is absolutely a nightmare. Moreover this world is ruled by IE, the two headed beast, which encompasses two GC mechanisms each one of them is not aware to the other. It is so easy to introduce new memory leaks and it is so hard to eliminate  them.&lt;br /&gt;&lt;br /&gt;I am currently involved in a project written in GWT. I must admit that on the first look this ambitious technology looks quite promising. Developing in Java is much better than JavaScript, GWT offers mitigation to browser incompatibility and IE memory leaks.&lt;br /&gt;&lt;br /&gt;Indeed, development phase was quite productive developers did enjoy to develop the code and delivered  fast results. (Complications came back when JavaScript native code needed to be written in order to supply needed functionality not supported by GWT--&gt; we were back in the JS alley)&lt;br /&gt;&lt;br /&gt;When we approached stabilization phase things became nasty.  On one hand performance optimizations where required and we could not ignore the fact that the target engine was JavaScript engine. Moreover the biggest nightmare was memory leaks in IE 6/7.  Each indirect circular reference between the DOM and the JS engine caused the entire JS to be locked in memory leading to megabytes of leak. The effort needed to solve memory leaks was huge and involved most of the code written.  I will not delve into project constraints and design criteria that might have made this problem so acute. I want to focus on some guidelines to help in avoiding and solving memory leaks. Since this post is getting a bit long I will split those guidelines to the next one.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And one good news to close this post: I opened a bug to Google regarding a memory leak  when closing a window 5 months ago. I  forgot all about it, buts suddenly out of the blue I got an email.  Bug was verified and fixed. Fix will be available for &lt;a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=2014"&gt;GWT1.5&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-280946024760645795?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/280946024760645795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=280946024760645795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/280946024760645795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/280946024760645795'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/05/client-side-memory-leaks-ie-and-gwt.html' title='Client side Memory Leaks IE and GWT - Introduction'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-7790379517334364340</id><published>2008-05-27T23:55:00.000+03:00</published><updated>2008-05-28T00:07:38.180+03:00</updated><title type='text'>Moore's Law for the average Mosquito</title><content type='html'>&lt;div style="text-align: justify;"&gt;I really planned to go to sleep, but I was really amazed by the amount of mosquitoes that one have to hunt before he can go to sleep quietly.  It suddenly occurred to me that the average  mosquito is becoming twice as fast every approx two years.  It is maneuvering much better. It's flight is much more silent and its bite is becoming stronger.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When are we going to see dual core mosquitoes?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-7790379517334364340?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/7790379517334364340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=7790379517334364340' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7790379517334364340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/7790379517334364340'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/05/moores-law-for-average-mosquito.html' title='Moore&apos;s Law for the average Mosquito'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3857007129715168662.post-3958086713444909566</id><published>2008-05-27T23:20:00.000+03:00</published><updated>2008-05-27T23:43:51.969+03:00</updated><title type='text'>System.out.println("Hello World!");</title><content type='html'>Hello world&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I wanted to open a professional blog for a long time. It took me a few months to convince myself that I can transform this desire into commitment. I have a lot of thoughts related to java and performance that I want to share with you all. I really hope it will be a trigger an effective and lively discussion.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;There goes away one hour of sleep a day...  I hope that I will not fall asleep in the middle of the posts :-)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;So, now I will check again that post title is not empty and....&lt;br /&gt;System.out.flush();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3857007129715168662-3958086713444909566?l=blog.performize-it.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.performize-it.com/feeds/3958086713444909566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3857007129715168662&amp;postID=3958086713444909566' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3958086713444909566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3857007129715168662/posts/default/3958086713444909566'/><link rel='alternate' type='text/html' href='http://blog.performize-it.com/2008/05/systemoutprintlnhello-world.html' title='System.out.println(&quot;Hello World!&quot;);'/><author><name>Lifey</name><uri>http://www.blogger.com/profile/10586718302147663938</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/-0taLI3_gVy0/TX-jYtUjfOI/AAAAAAAAAsY/Hu70GVPWLBA/s220/28790e9.jpg'/></author><thr:total>1</thr:total></entry></feed>
