{"id":5453,"date":"2012-06-22T12:12:59","date_gmt":"2012-06-22T10:12:59","guid":{"rendered":"http:\/\/blog.orange11.nl\/?p=5453"},"modified":"2012-06-22T12:12:59","modified_gmt":"2012-06-22T10:12:59","slug":"jvm-memory-management-and-performance-tuning","status":"publish","type":"post","link":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/","title":{"rendered":"JVM memory management and performance tuning"},"content":{"rendered":"<p>Performance and scalability are important topics for most enterprise applications that we build. Oftentimes we mostly consider connections to external systems (databases, message brokers, external web services) when we think about performance bottlenecks or performance and scalability optimization. This makes sense, as most enterprise applications spend a lot of their time performing (typically blocking) I\/O. However, when you start to dig deeper and use tools like profilers and do thread dump and garbage collection analysis you&#8217;ll find that the actual code running in the Java VM can be the primary cause of severe performance and\/or scalability issues under load.<br \/>\nMemory allocation can play a big role here: although garbage collection performance has increased a lot with every new version of the JVM, applications &#8212; esp. those with large heap sizes &#8212; can still suffer from full GC sweeps that always seem to happen at the worst possible moment and stop the world for several seconds.<\/p>\n<p>To ensure that your application makes the most efficient use of the VM it&#8217;s running on it&#8217;s important to understand the interaction between your app and the VM, and also to understand the various tuning options that are available in the JVM that you happen to be using.<\/p>\n<h3>Tech Meeting with Azul Systems<\/h3>\n<p>During our next tech meeting we will have a speaker from Azul Systems as our guest to deliver a workshop seminar on JVM performance. As you may know, Azul Systems is a company that provides a custom Hotspot compatible JVM called Zing for systems that require very high and predictable performance. However, this workshop will not be a product sales pitch: instead, it will help you to understand the way JVMs perform memory management in general and garbage collection in particular, and how you can inspect the runtime behavior of your VMs in this respect. You&#8217;ll learn about how to properly measure statistics and avoid common pitfalls, and how to use the results for tuning purposes.<br \/>\nObviously you&#8217;ll see how Zing compares to the standard JVMs used by most people in this respect, but even when you are not planning on migrating to a new JVM you&#8217;ll leave this session with a deeper understanding of Java memory management, how it affects your applications and how you make it work to your advantage.<\/p>\n<p>So, when you&#8217;re interested, make sure to <a title=\"Tech Meeting Registration\" href=\"http:\/\/info.orange11.nl\/july2012techmeetingo11.html\">sign up for the meeting<\/a>! It takes place on Thursday 5th July at our office in Amsterdam and will start at 4 PM. Attending is free and we&#8217;ll make sure that there&#8217;s pizza and beer to accompany the workshop.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Performance and scalability are important topics for most enterprise applications that we build. Oftentimes we mostly consider connections to external systems (databases, message brokers, external web services) when we think about performance bottlenecks or performance and scalability optimization. This makes sense, as most enterprise applications spend a lot of their time performing (typically blocking) I\/O. [&hellip;]<\/p>\n","protected":false},"author":62,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[56,31,10],"tags":[],"class_list":["post-5453","post","type-post","status-publish","format-standard","hentry","category-education","category-java","category-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>JVM memory management and performance tuning - Trifork Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"JVM memory management and performance tuning - Trifork Blog\" \/>\n<meta property=\"og:description\" content=\"Performance and scalability are important topics for most enterprise applications that we build. Oftentimes we mostly consider connections to external systems (databases, message brokers, external web services) when we think about performance bottlenecks or performance and scalability optimization. This makes sense, as most enterprise applications spend a lot of their time performing (typically blocking) I\/O. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/\" \/>\n<meta property=\"og:site_name\" content=\"Trifork Blog\" \/>\n<meta property=\"article:published_time\" content=\"2012-06-22T10:12:59+00:00\" \/>\n<meta name=\"author\" content=\"Joris Kuipers\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joris Kuipers\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/\",\"url\":\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/\",\"name\":\"JVM memory management and performance tuning - Trifork Blog\",\"isPartOf\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#website\"},\"datePublished\":\"2012-06-22T10:12:59+00:00\",\"author\":{\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/265bd41e503f7176742258a927de598b\"},\"breadcrumb\":{\"@id\":\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/trifork.nl\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JVM memory management and performance tuning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/trifork.nl\/blog\/#website\",\"url\":\"https:\/\/trifork.nl\/blog\/\",\"name\":\"Trifork Blog\",\"description\":\"Keep updated on the technical solutions Trifork is working on!\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/trifork.nl\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/265bd41e503f7176742258a927de598b\",\"name\":\"Joris Kuipers\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9ab8da0d60582bad84342d4602d23dbd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9ab8da0d60582bad84342d4602d23dbd?s=96&d=mm&r=g\",\"caption\":\"Joris Kuipers\"},\"sameAs\":[\"http:\/\/www.trifork.nl\"],\"url\":\"https:\/\/trifork.nl\/blog\/author\/jorisk\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"JVM memory management and performance tuning - Trifork Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/","og_locale":"en_US","og_type":"article","og_title":"JVM memory management and performance tuning - Trifork Blog","og_description":"Performance and scalability are important topics for most enterprise applications that we build. Oftentimes we mostly consider connections to external systems (databases, message brokers, external web services) when we think about performance bottlenecks or performance and scalability optimization. This makes sense, as most enterprise applications spend a lot of their time performing (typically blocking) I\/O. [&hellip;]","og_url":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/","og_site_name":"Trifork Blog","article_published_time":"2012-06-22T10:12:59+00:00","author":"Joris Kuipers","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Joris Kuipers","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/","url":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/","name":"JVM memory management and performance tuning - Trifork Blog","isPartOf":{"@id":"https:\/\/trifork.nl\/blog\/#website"},"datePublished":"2012-06-22T10:12:59+00:00","author":{"@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/265bd41e503f7176742258a927de598b"},"breadcrumb":{"@id":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/trifork.nl\/blog\/jvm-memory-management-and-performance-tuning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/trifork.nl\/blog\/"},{"@type":"ListItem","position":2,"name":"JVM memory management and performance tuning"}]},{"@type":"WebSite","@id":"https:\/\/trifork.nl\/blog\/#website","url":"https:\/\/trifork.nl\/blog\/","name":"Trifork Blog","description":"Keep updated on the technical solutions Trifork is working on!","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/trifork.nl\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/265bd41e503f7176742258a927de598b","name":"Joris Kuipers","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/trifork.nl\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9ab8da0d60582bad84342d4602d23dbd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9ab8da0d60582bad84342d4602d23dbd?s=96&d=mm&r=g","caption":"Joris Kuipers"},"sameAs":["http:\/\/www.trifork.nl"],"url":"https:\/\/trifork.nl\/blog\/author\/jorisk\/"}]}},"_links":{"self":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/5453","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/comments?post=5453"}],"version-history":[{"count":0,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/posts\/5453\/revisions"}],"wp:attachment":[{"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/media?parent=5453"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/categories?post=5453"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trifork.nl\/blog\/wp-json\/wp\/v2\/tags?post=5453"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}