{"id":156,"date":"2004-07-02T10:29:27","date_gmt":"2004-07-02T16:29:27","guid":{"rendered":"http:\/\/www.mooreds.com\/wordpress\/?p=156"},"modified":"2004-07-02T10:29:27","modified_gmt":"2004-07-02T16:29:27","slug":"more-on-the-difficulty-of-tuning-the-jvm","status":"publish","type":"post","link":"https:\/\/www.mooreds.com\/wordpress\/archives\/156","title":{"rendered":"More on the difficulty of tuning the JVM"},"content":{"rendered":"<p>Here&#8217;s a  <a href='http:\/\/www.informit.com\/guides\/content.asp?g=java&amp;seqNum=26'>great overview of the JVM memory model<\/a> (for all of Sun&#8217;s JVMs, including the latest changes).  I find it intensely interesting that he brushes over what, for me, is the most complicated part of any web application tuning&#8211;testing.  He outlines a process for initially sizing the various compartments of the JVM heap (for versions 1.4 and below), and then says: &#8216;The [resizing] process continues by &#8220;testing and tweaking&#8221; until things look good.&#8217;  <\/p>\n<p>Wow.  Talk about waving your hands.  I did <a href='http:\/\/www.mooreds.com\/weblog\/archives\/000111.html'>some testing<\/a> of a web application a few months ago, but when I presented the results, I was very clear that they were guidelines only.  I didn&#8217;t have the resources or ingenuity to replicate the behavior of real users on real clients.  A few years ago, I was part of a project that ran aground on this same rock, costing the company I was working for plenty of money.  Using software to imitate user behavior is hard.  A short list of the differences between software and users:<\/p>\n<p>1.  Users get distracted&#8211;by popups, their kids, etc.  Software, not so much.<br \/>\n2.  Users are connecting via a variety of methods, with a wide range of quality levels&#8211;modems, broadband.<br \/>\n3.  Users don&#8217;t use applications in the way developers intended.  The testing software, on the other hand, is programmed by developers, who naturally have it use the application in the way they intended<\/p>\n<p>The <a href='http:\/\/java.sun.com\/j2se\/1.5.0\/docs\/guide\/vm\/gc-ergonomics.html'>adaptive memory model for the next JDK<\/a> (wow, now it&#8217;s <a href='http:\/\/java.sun.com\/j2se\/1.5.0\/index.jsp'>J2SE 5<\/a>&#8211;Sun pulled another Solaris reversioning trick) that the author outlines might make the &#8220;tweaking&#8221; portion of his hand waving, err, I mean tuning, easier but leaves the &#8220;testing&#8221; as difficult as ever.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Here&#8217;s a great overview of the JVM memory model (for all of Sun&#8217;s JVMs, including the latest changes). I find it intensely interesting that he brushes over what, for me, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-156","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/comments?post=156"}],"version-history":[{"count":0,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/posts\/156\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/media?parent=156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/categories?post=156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mooreds.com\/wordpress\/wp-json\/wp\/v2\/tags?post=156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}