{"id":33,"date":"2015-03-05T16:13:10","date_gmt":"2015-03-05T15:13:10","guid":{"rendered":"http:\/\/itblog.inginea.eu\/?p=33"},"modified":"2017-01-03T12:36:44","modified_gmt":"2017-01-03T11:36:44","slug":"decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector","status":"publish","type":"post","link":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/","title":{"rendered":"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector"},"content":{"rendered":"<p>Ever wondered why Eclipse\/Netbeans keeps pausing for a while every now an then? Especially right at the time when you want to show something in the code to your dear colleages? It feelt embarrassing and awkward, didn&#8217;t it?<\/p>\n<p>I found out that most of the time the IDE pauses because of Garbage Collector execution. The subtle little element in design of JVM, which usually does great job in relieving us developers from worrying about memory consumption, and most people are just happy that it does its job well and ignore it most of the time. However, the consequences of\u00a0running Garbage Collector may surprise us if we simply ignore it.<!--more--><\/p>\n<p>In short, when GC is running, it pauses execution of the application until it is done freeing the memory. This is for sure unacceptable for real-time systems, where Java is certainly not the number one option. But even in non-critical huge desktop applications, which modern Java IDEs certainly are, the GC may stop the whole application for several seconds. And this may happen several times during the day. You can imagine that with productivity tools like IDEs, this is simply dragging down their &#8220;productivity&#8221; effect.<\/p>\n<p>A solution is to do some tweaking:<\/p>\n<p>&#8211; increase memory for JVM on which the IDE is running (beware that this only reduces frequency of GC being called, but prolongs the execution time of a single GC run &#8211; it takes longer to collect garbage from bigger pile&#8230;)<\/p>\n<p>&#8211; switch default GC engine for a more concurrent engine, which tries to collect garbage\u00a0continually even between stop-everything-until-done executions of complete GC<\/p>\n<p>The first option is well known to majority of Java programmers &#8211; just define reasonable values for MaxPermSize and the family.<\/p>\n<p>The second option, however, is not so well known. The point is that\u00a0Oracle Java Hotspot JVM provides several alternative GC engines, which we can choose from. And they, unlike the default one, provide continuous garbage collection even between the big GC executions that slow everything down.<\/p>\n<h2>G1 Garbage Collector<\/h2>\n<p>Since Java 7 update 4, Oracle provides <a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/7u4-relnotes-1575007.html\">G1 Garbage Collector in JVM<\/a>.<\/p>\n<p>You may enable it simply with this command line param:<\/p>\n<pre class=\"toolbar:2 marking:false ranges:false nums:false nums-toggle:false lang:default decode:true\">-XX:+UseG1GC<\/pre>\n<p>G1 has also an interesting option to limit the length of GC processing, therefore limiting the length of the pause due to GC.<\/p>\n<pre class=\"toolbar:2 marking:false ranges:false nums:false nums-toggle:false lang:java decode:true\">-XX:MaxGCPauseMillis=n<\/pre>\n<p>I recommend setting this to 2000, as 2 second pause is usually acceptable while working with IDE. Mind that this is only a soft hint for G1 collector &#8211; it will not be respected if a GC cycle requires more time, but in most cases G1 should respect it.<\/p>\n<p>For more info on how to configure G1, see \u00a0<a href=\"http:\/\/www.oracle.com\/technetwork\/java\/javase\/tech\/vmoptions-jsp-140102.html#G1Options\">Java Hotspot VM G1 options<\/a>.<\/p>\n<h2>CMS Garbage Collector<\/h2>\n<p>In some <a href=\"http:\/\/blog.mgm-tp.com\/2013\/12\/benchmarking-g1-and-other-java-7-garbage-collectors\/\">benchmarks<\/a>, older CMS collector outperforms the newer G1 collector.<\/p>\n<p>You may enable it instead of G1 with these options:<\/p>\n<pre class=\"toolbar:2 marking:false ranges:false nums:false nums-toggle:false lang:default decode:true\">-XX:+UseConcMarkSweepGC<\/pre>\n<h2>Configuration\u00a0in Netbeans<\/h2>\n<p>In order to\u00a0add the necessary command line options described above into Netbeans, you need to edit the file <span class=\"lang:default decode:true  crayon-inline \">etc\/netbeans.conf<\/span>\u00a0 in the Netbeans installation directory.<\/p>\n<p>In the <span class=\"lang:default decode:true  crayon-inline \">netbeans.conf<\/span>\u00a0 file, search for <span class=\"lang:default decode:true  crayon-inline \">netbeans_default_options<\/span>\u00a0 and add any command line argument into the string value, each argument prefixed with <span class=\"lang:default decode:true  crayon-inline \">-J<\/span>\u00a0. For example, the following configuration will turn on G1 GC:<\/p>\n<pre class=\"toolbar:2 show-lang:2 nums:false lang:sh decode:true \">netbeans_default_options=\"-J-XX:+UseG1GC &lt;the rest of the netbeans options string&gt;\"<\/pre>\n<p>&nbsp;<\/p>\n<h2>Special Eclipse tweaking<\/h2>\n<p>GC tweaking really helped to improve performance of my Netbeans installation. However, to be honest, with Eclipse IDE, GC tweaking is only one of many steps to optimize the performance, and it is unfortunately only a minor one. What helps a lot more are tweaks in configuration, like turning off some validations in the code, reducing size of console output. In my case, console output was freezing Eclipse so much, that I needed to redirect standard output of my application server to a file and bypass the console completely \ud83d\ude41<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ever wondered why Eclipse\/Netbeans keeps pausing for a while every now an then? Especially right at the time when you want to show something in the code to your dear colleages? It feelt embarrassing and awkward, didn&#8217;t it? I found out that most of the time the IDE pauses because of Garbage Collector execution. The [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[64],"tags":[13,12,14],"series":[],"class_list":["post-33","post","type-post","status-publish","format-standard","hentry","category-java","tag-gc","tag-ide","tag-jvm"],"jetpack_publicize_connections":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Decrease your Java IDE lagging by fine tuning JVM Garbage Collector - .Lost in Coding<\/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:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector - .Lost in Coding\" \/>\n<meta property=\"og:description\" content=\"Ever wondered why Eclipse\/Netbeans keeps pausing for a while every now an then? Especially right at the time when you want to show something in the code to your dear colleages? It feelt embarrassing and awkward, didn&#8217;t it? I found out that most of the time the IDE pauses because of Garbage Collector execution. The [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\" \/>\n<meta property=\"og:site_name\" content=\".Lost in Coding\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ondrej.mihalyi\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ondrej.mihalyi\" \/>\n<meta property=\"article:published_time\" content=\"2015-03-05T15:13:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-01-03T11:36:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2021\/09\/duke-CloudSurf-small-e1637277171314.png?fit=300%2C202&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"300\" \/>\n\t<meta property=\"og:image:height\" content=\"202\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Ondro Mih\u00e1lyi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/OndroMih\" \/>\n<meta name=\"twitter:site\" content=\"@OndroMih\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ondro Mih\u00e1lyi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\"},\"author\":{\"name\":\"Ondro Mih\u00e1lyi\",\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\"},\"headline\":\"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector\",\"datePublished\":\"2015-03-05T15:13:10+00:00\",\"dateModified\":\"2017-01-03T11:36:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\"},\"wordCount\":636,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\"},\"keywords\":[\"GC\",\"IDE\",\"JVM\"],\"articleSection\":[\"Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\",\"url\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\",\"name\":\"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector - .Lost in Coding\",\"isPartOf\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#website\"},\"datePublished\":\"2015-03-05T15:13:10+00:00\",\"dateModified\":\"2017-01-03T11:36:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ondro.inginea.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ondro.inginea.eu\/#website\",\"url\":\"https:\/\/ondro.inginea.eu\/\",\"name\":\".Lost in Coding\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ondro.inginea.eu\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616\",\"name\":\"Ondro Mih\u00e1lyi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1\",\"contentUrl\":\"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1\",\"width\":300,\"height\":300,\"caption\":\"Ondro Mih\u00e1lyi\"},\"logo\":{\"@id\":\"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/\"},\"description\":\"Ondro is a software developer and consultant specializing in combining standard and proven tools to solve new and challenging problems. He's been developing in Java for over 10 years. He\u2019s worked for clients like Payara, LottoLand, Uniqa and others. He has co-founded OmniFish, where he works as a director and Jakarta EE expert. He\u2019s passionate about helping his clients and the wider Java community with their projects based on Jakarta EE and similar technologies. As an experienced Java developer and instructor, he's helped companies build and educate their development teams and improve their development processes. He's a core member of several opensource projects and Jakarta EE specification projects. He\u2019s a frequent conference speaker, leader of the Czech JUG and a Java Champion. Ondro is a regular conference speaker at international conferences. Since 2016, he's presented at the following conferences: \u2022 FOSDEM, Brussels, Belgium 2023) \u2022 JChampionsConf, Online (year 2023) \u2022 EclipseCon, Germany (year 2022) \u2022 GeeCon, Prague, Czechia (years 2016, 2019, 2022) \u2022 JavaLand, Bruehl, Germany (years 2018, 2021) \u2022 JFokus, Stockholm, Sweden (year 2019) \u2022 Devops Con, Munich, Germany (year 2019) \u2022 Oracle CodeOne, San Francisco, USA (years 2018, 2019) \u2022 Devoxx, Antwerp, Belgium (year 2018) \u2022 JPrime, Sofia, Bulgaria (years 2017, 2018) \u2022 Java2Days, Sofia, Bulgaria (years 2016, 2018) \u2022 EclipseCon, France (year 2018) \u2022 JavaOne, San Francisco, USA (years 2016, 2017) \u2022 Oracle Code, Prague, Czechia (year 2017) \u2022 Devoxx, London, UK (year 2017) \u2022 GeeCon, Krakow, Poland (year 2017) \u2022 W-JAX, Munich, Germany (years 2016, 2017) \u2022 Bed-Con, Berlin, Germany (year 2017) \u2022 Oredev, Malmo, Sweden (year 2017) \u2022 Devoxx, Casablanca, Morocco (year 2017) \u2022 Java Developer Days, Krakow, Poland (year 2016)\",\"sameAs\":[\"https:\/\/www.facebook.com\/ondrej.mihalyi\",\"https:\/\/cz.linkedin.com\/in\/mihalyiondrej\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/OndroMih\"],\"url\":\"https:\/\/ondro.inginea.eu\/index.php\/author\/ondrejm\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector - .Lost in Coding","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:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/","og_locale":"en_US","og_type":"article","og_title":"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector - .Lost in Coding","og_description":"Ever wondered why Eclipse\/Netbeans keeps pausing for a while every now an then? Especially right at the time when you want to show something in the code to your dear colleages? It feelt embarrassing and awkward, didn&#8217;t it? I found out that most of the time the IDE pauses because of Garbage Collector execution. The [&hellip;]","og_url":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/","og_site_name":".Lost in Coding","article_publisher":"https:\/\/www.facebook.com\/ondrej.mihalyi","article_author":"https:\/\/www.facebook.com\/ondrej.mihalyi","article_published_time":"2015-03-05T15:13:10+00:00","article_modified_time":"2017-01-03T11:36:44+00:00","og_image":[{"width":300,"height":202,"url":"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2021\/09\/duke-CloudSurf-small-e1637277171314.png?fit=300%2C202&ssl=1","type":"image\/png"}],"author":"Ondro Mih\u00e1lyi","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/OndroMih","twitter_site":"@OndroMih","twitter_misc":{"Written by":"Ondro Mih\u00e1lyi","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#article","isPartOf":{"@id":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/"},"author":{"name":"Ondro Mih\u00e1lyi","@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616"},"headline":"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector","datePublished":"2015-03-05T15:13:10+00:00","dateModified":"2017-01-03T11:36:44+00:00","mainEntityOfPage":{"@id":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/"},"wordCount":636,"commentCount":0,"publisher":{"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616"},"keywords":["GC","IDE","JVM"],"articleSection":["Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/","url":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/","name":"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector - .Lost in Coding","isPartOf":{"@id":"https:\/\/ondro.inginea.eu\/#website"},"datePublished":"2015-03-05T15:13:10+00:00","dateModified":"2017-01-03T11:36:44+00:00","breadcrumb":{"@id":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ondro.inginea.eu\/index.php\/decrease-your-java-ide-lagging-by-fine-tuning-jvm-garbage-collector\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ondro.inginea.eu\/"},{"@type":"ListItem","position":2,"name":"Decrease your Java IDE lagging by fine tuning JVM Garbage Collector"}]},{"@type":"WebSite","@id":"https:\/\/ondro.inginea.eu\/#website","url":"https:\/\/ondro.inginea.eu\/","name":".Lost in Coding","description":"","publisher":{"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ondro.inginea.eu\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/07ac1158ec74720744f7146572215616","name":"Ondro Mih\u00e1lyi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/","url":"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1","contentUrl":"https:\/\/i2.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/08\/fotoOMsquare3x300.jpg?fit=300%2C300&ssl=1","width":300,"height":300,"caption":"Ondro Mih\u00e1lyi"},"logo":{"@id":"https:\/\/ondro.inginea.eu\/#\/schema\/person\/image\/"},"description":"Ondro is a software developer and consultant specializing in combining standard and proven tools to solve new and challenging problems. He's been developing in Java for over 10 years. He\u2019s worked for clients like Payara, LottoLand, Uniqa and others. He has co-founded OmniFish, where he works as a director and Jakarta EE expert. He\u2019s passionate about helping his clients and the wider Java community with their projects based on Jakarta EE and similar technologies. As an experienced Java developer and instructor, he's helped companies build and educate their development teams and improve their development processes. He's a core member of several opensource projects and Jakarta EE specification projects. He\u2019s a frequent conference speaker, leader of the Czech JUG and a Java Champion. Ondro is a regular conference speaker at international conferences. Since 2016, he's presented at the following conferences: \u2022 FOSDEM, Brussels, Belgium 2023) \u2022 JChampionsConf, Online (year 2023) \u2022 EclipseCon, Germany (year 2022) \u2022 GeeCon, Prague, Czechia (years 2016, 2019, 2022) \u2022 JavaLand, Bruehl, Germany (years 2018, 2021) \u2022 JFokus, Stockholm, Sweden (year 2019) \u2022 Devops Con, Munich, Germany (year 2019) \u2022 Oracle CodeOne, San Francisco, USA (years 2018, 2019) \u2022 Devoxx, Antwerp, Belgium (year 2018) \u2022 JPrime, Sofia, Bulgaria (years 2017, 2018) \u2022 Java2Days, Sofia, Bulgaria (years 2016, 2018) \u2022 EclipseCon, France (year 2018) \u2022 JavaOne, San Francisco, USA (years 2016, 2017) \u2022 Oracle Code, Prague, Czechia (year 2017) \u2022 Devoxx, London, UK (year 2017) \u2022 GeeCon, Krakow, Poland (year 2017) \u2022 W-JAX, Munich, Germany (years 2016, 2017) \u2022 Bed-Con, Berlin, Germany (year 2017) \u2022 Oredev, Malmo, Sweden (year 2017) \u2022 Devoxx, Casablanca, Morocco (year 2017) \u2022 Java Developer Days, Krakow, Poland (year 2016)","sameAs":["https:\/\/www.facebook.com\/ondrej.mihalyi","https:\/\/cz.linkedin.com\/in\/mihalyiondrej","https:\/\/twitter.com\/https:\/\/twitter.com\/OndroMih"],"url":"https:\/\/ondro.inginea.eu\/index.php\/author\/ondrejm\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p6wlb6-x","jetpack-related-posts":[{"id":533,"url":"https:\/\/ondro.inginea.eu\/index.php\/using-hotswapagent-to-speed-up-development\/","url_meta":{"origin":33,"position":0},"title":"Using HotswapAgent to speed up development","author":"Ondro Mih\u00e1lyi","date":"20 October, 2017","format":false,"excerpt":"As a Java EE developer, I sometimes envy how fast it's possible to see the result of a code change in a running application with interpreted languages like PHP or JavaScript. With Java, it's always necessary to rebuild the source code in a bytecode, which can be then safely updated\u2026","rel":"","context":"In &quot;Configuration&quot;","block_context":{"text":"Configuration","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/config\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2017\/09\/Screenshot-from-DCEVM.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":416,"url":"https:\/\/ondro.inginea.eu\/index.php\/the-simplest-way-to-define-a-singleton-in-java-correctly\/","url_meta":{"origin":33,"position":1},"title":"The simplest way to define a singleton in Java correctly","author":"Ondro Mih\u00e1lyi","date":"11 September, 2016","format":false,"excerpt":"A singleton pattern is probably the simplest well-known design pattern, but still people often implement it incorrectly in Java. The main goal of the pattern is to ensure there is a single instance of a class accessible globally before it is first needed. But wait, that could be accomplished just\u2026","rel":"","context":"In &quot;Java&quot;","block_context":{"text":"Java","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":769,"url":"https:\/\/ondro.inginea.eu\/index.php\/new-features-in-java-versions-since-java-8\/","url_meta":{"origin":33,"position":2},"title":"New features between Java 8 and Java 19","author":"Ondro Mih\u00e1lyi","date":"8 October, 2022","format":false,"excerpt":"Since version 9, Java has new features every 6 months and it's very hard to keep track of these new changes. Most of the information on the internet describes changes between the last 2 Java versions. However, if you're in a similar situation as me, you're not using one of\u2026","rel":"","context":"In &quot;Java&quot;","block_context":{"text":"Java","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/ondro.inginea.eu\/wp-content\/uploads\/2021\/09\/duke-CloudSurf-small-e1637277171314.png?fit=300%2C202&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":13,"url":"https:\/\/ondro.inginea.eu\/index.php\/impressions-from-geecon-in-prague-day-2\/","url_meta":{"origin":33,"position":3},"title":"Impressions from Geecon in Prague &#8211; Day 2","author":"Ondro Mih\u00e1lyi","date":"15 November, 2014","format":false,"excerpt":"The day 2 started earlier than the day before. A bit too early for me. While hurrying to catch the beginning of the first presentation, however, a stranger with a big suitcase passed by me in an even greater hurry, a bit confused about which way to take. I grinned\u2026","rel":"","context":"In &quot;Events &amp; Conferences&quot;","block_context":{"text":"Events &amp; Conferences","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/events-conferences\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":998,"url":"https:\/\/ondro.inginea.eu\/index.php\/introduction-to-concurrency-and-threads-in-java-web-apps\/","url_meta":{"origin":33,"position":4},"title":"Introduction to concurrency and threads in Java web apps","author":"Ondro Mih\u00e1lyi","date":"3 July, 2022","format":false,"excerpt":"Threads, concurrency, or synchronization are not very easy to understand concepts. Jakarta EE builds on standard Java features and makes them easier to understand and use, using the thread pool concept and the Jakarta Concurrency API.","rel":"","context":"In &quot;Jakarta EE&quot;","block_context":{"text":"Jakarta EE","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/java\/jakarta-ee\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":476,"url":"https:\/\/ondro.inginea.eu\/index.php\/what-people-expect-to-see-at-the-conferences\/","url_meta":{"origin":33,"position":5},"title":"What people expect to see at the conferences","author":"Ondro Mih\u00e1lyi","date":"24 January, 2017","format":false,"excerpt":"As a public presenter, I always wonder what kind of presentation should I submit for tech conferences. Knowing what people want to hear about is always important to submit a good talk, and to give a good presentation once the talk is accepted by the conference. Here are some insights\u2026","rel":"","context":"In &quot;Events &amp; Conferences&quot;","block_context":{"text":"Events &amp; Conferences","link":"https:\/\/ondro.inginea.eu\/index.php\/category\/events-conferences\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts\/33"}],"collection":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/comments?post=33"}],"version-history":[{"count":12,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions"}],"predecessor-version":[{"id":469,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/posts\/33\/revisions\/469"}],"wp:attachment":[{"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/media?parent=33"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/categories?post=33"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/tags?post=33"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/ondro.inginea.eu\/index.php\/wp-json\/wp\/v2\/series?post=33"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}