{"id":9207,"date":"2020-06-08T08:21:02","date_gmt":"2020-06-08T08:21:02","guid":{"rendered":"http:\/\/foojay.io\/?p=9207"},"modified":"2021-01-29T22:34:03","modified_gmt":"2021-01-29T22:34:03","slug":"top-10-fun-with-jvm-flags","status":"publish","type":"post","link":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/","title":{"rendered":"Fun with Flags: My Top 10 Resources for JVM Flags"},"content":{"rendered":"\n<p>When I first started programming in Java and configuring my local environment, I came across mentions of JVM flags. I wanted to find out more about what options are available, what they do, and how to make use of them. Delving into the internet to discover what other more seasoned developers had to say on the topic, I was surprised at how hard it was to get definitive answers, and ultimately this research left me with more questions than answers. Since resources on this topic are scattered and hard to find, I put together this consolidated list in the hopes that others don't have to scour the internet as I did to find these useful morsels.<\/p>\n\n\n\n<p>Below are the best 10 I have found, listed chronologically, although all are really awesome and worth exploring!<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/foojay.io\/command-line-arguments\/openjdk-11\/?tab=alloptions\" target=\"_blank\" rel=\"noreferrer noopener\">JVM Options Explorer<\/a>, by Chris Newland. An incredible list of Java command line options that is actively maintained and updated. The flags are organized by Java version and vendor showing information about each flag including the file it is defined in. The website offers search and sort features to help navigate the large number of flags. The website also has a separate page that shows which flags were added and removed for each HotSpot version. Java versions in the main list vary by vendor but include options for JDK6 through JDK15. Vendors include HotSpot, Graal, OpenJ9 and Azul. These lists are compiled from vendor sources. <strong>As of June 2020, this tool is actively maintained.<\/strong><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/jacoline.dev\/inspect\" target=\"_blank\">JaCoLine - Java Command Line Inspector<\/a>, by Chris Newland. A very useful tool for developers and devops to understand and validate their Java command line options. <strong>As of June 2020, this tool is actively maintained.<\/strong><\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/geekflare.com\/important-jvm-options\/\" target=\"_blank\">10 Important JVM Options for Production Java Application Systems<\/a>, by Geekflare, <strong>published on October 26, 2019<\/strong>. Article highlighting a handful of command line options, with explanations on what they do and how to use them.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/www.jrebel.com\/blog\/jvm-options-cheat-sheet\" target=\"_blank\">JVM Options Cheat Sheet<\/a>, by Simon Maple, JRebel, <strong>published on December 14, 2016<\/strong>. Good overview of the types of command line options available, along with a one page cheat sheet detailing some useful options of each type.<\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/www.reins.altervista.org\/java\/A_Collection_of_JVM_Options_MP.html\" target=\"_blank\">A Collection of JVM Options<\/a>, by Mariano Paniga. This list is mainly based on a list compiled by Joseph D. Mocker with a few other resources. It contains Java command line options for versions 1.3.1 through 1.6.0, and <strong>was last updated on January 19, 2015<\/strong>.<\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/jvm-options.tech.xebia.fr\/\" target=\"_blank\">JVM Options - The complete reference<\/a>, by Pierre Laporte, published by Xebia. A searchable list of HotSpot options that display option catagory, architecture, and default value. The web application source code is published on GitHub, and <strong>was last updated on August 26, 2013<\/strong>. Command line options were compiled from HotSpot sources.<\/li><li><a rel=\"noreferrer noopener\" href=\"https:\/\/blog.codecentric.de\/en\/2012\/07\/useful-jvm-flags-part-1-jvm-types-and-compiler-modes\/\" target=\"_blank\">Useful JVM Flags<\/a>, by Patrick Peschlow. By codecentric, <strong>published from 2012-2014<\/strong>, a series of 8 blog posts highlighting various JVM flags and how to use them.<\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/stas-blogspot.blogspot.com\/2011\/07\/most-complete-list-of-xx-options-for.html\" target=\"_blank\">The most complete list of -XX options for Java JVM<\/a>, by Stanislav Kobylyanskiy. This blog post includes a list of Java command line options revived from a web resource that is no longer available. This blogpost <strong>was published on July 20, 2011<\/strong>.<\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/q-redux.blogspot.com\/2011\/01\/inspecting-hotspot-jvm-options.html\" target=\"_blank\">Inspecting HotSpot JVM Options<\/a>, by Zahid Qureshi <strong>published January 7, 2011<\/strong>. Guide explaining how to print the comprehensive set of HotSpot JVM options and some examples comparing different outputs.<\/li><li><a rel=\"noreferrer noopener\" href=\"http:\/\/jvmmemory.com\/\" target=\"_blank\">JVM Memory tool<\/a>, by Leonid Vygovskiy. A tool that generates JVM command line options based on users inputs for JDK6, JDK7 and JDK8.<\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>When I first started programming in Java and configuring my local environment, I came across mentions of JVM flags. I wanted to find out more about what options are available, what they do, and how to make use of them.<\/p>\n<p>Since resources on this topic are scattered and hard to find, I put together this consolidated list of places where JVM command line arguments are described in the hopes that others don&#8217;t have to scour the internet as I did to find these useful morsels.<\/p>\n","protected":false},"author":6,"featured_media":9212,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[198],"tags":[33,34,35],"class_list":["post-9207","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-performance","tag-java","tag-jdk","tag-openjdk"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fun with Flags: My Top 10 Resources for JVM Flags | foojay<\/title>\n<meta name=\"description\" content=\"Resources on JVM command line arguments are scattered and hard to find, here is aconsolidated list so that others don&#039;t have to scour the internet as I did!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fun with Flags: My Top 10 Resources for JVM Flags | foojay\" \/>\n<meta property=\"og:description\" content=\"Resources on JVM command line arguments are scattered and hard to find, here is aconsolidated list so that others don&#039;t have to scour the internet as I did!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/\" \/>\n<meta property=\"og:site_name\" content=\"foojay\" \/>\n<meta property=\"article:published_time\" content=\"2020-06-08T08:21:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-29T22:34:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/foojay.io\/wp-content\/uploads\/2020\/06\/Logo.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"1499\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Betsy Rhodes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Betsy Rhodes\" \/>\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:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/\"},\"author\":{\"name\":\"Betsy Rhodes\",\"@id\":\"https:\\\/\\\/foojay.io\\\/#\\\/schema\\\/person\\\/d863d0aad2f82b3c6f66d9b647efd1e4\"},\"headline\":\"Fun with Flags: My Top 10 Resources for JVM Flags\",\"datePublished\":\"2020-06-08T08:21:02+00:00\",\"dateModified\":\"2021-01-29T22:34:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/\"},\"wordCount\":562,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/foojay.io\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Logo.png\",\"keywords\":[\"Java\",\"JDK\",\"OpenJDK\"],\"articleSection\":[\"Performance\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/\",\"url\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/\",\"name\":\"Fun with Flags: My Top 10 Resources for JVM Flags | foojay\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/foojay.io\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Logo.png\",\"datePublished\":\"2020-06-08T08:21:02+00:00\",\"dateModified\":\"2021-01-29T22:34:03+00:00\",\"description\":\"Resources on JVM command line arguments are scattered and hard to find, here is aconsolidated list so that others don't have to scour the internet as I did!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#primaryimage\",\"url\":\"https:\\\/\\\/foojay.io\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Logo.png\",\"contentUrl\":\"https:\\\/\\\/foojay.io\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/Logo.png\",\"width\":1500,\"height\":1499,\"caption\":\"Foojay.io Logo\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/foojay.io\\\/today\\\/top-10-fun-with-jvm-flags\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/foojay.io\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fun with Flags: My Top 10 Resources for JVM Flags\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/foojay.io\\\/#website\",\"url\":\"https:\\\/\\\/foojay.io\\\/\",\"name\":\"foojay\",\"description\":\"a place for friends of OpenJDK\",\"publisher\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/foojay.io\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/foojay.io\\\/#organization\",\"name\":\"foojay\",\"url\":\"https:\\\/\\\/foojay.io\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/foojay.io\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/foojay.io\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/cropped-Favicon.png\",\"contentUrl\":\"https:\\\/\\\/foojay.io\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/cropped-Favicon.png\",\"width\":512,\"height\":512,\"caption\":\"foojay\"},\"image\":{\"@id\":\"https:\\\/\\\/foojay.io\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/foojay2020\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/foojay.io\\\/#\\\/schema\\\/person\\\/d863d0aad2f82b3c6f66d9b647efd1e4\",\"name\":\"Betsy Rhodes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3bada436eedf81a70a6003e38904e21f1ac8a6d4d67b4993337f35c71849ef12?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3bada436eedf81a70a6003e38904e21f1ac8a6d4d67b4993337f35c71849ef12?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3bada436eedf81a70a6003e38904e21f1ac8a6d4d67b4993337f35c71849ef12?s=96&d=mm&r=g\",\"caption\":\"Betsy Rhodes\"},\"description\":\"Sr. Software Engineer at Azul\",\"url\":\"https:\\\/\\\/foojay.io\\\/today\\\/author\\\/betsy\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Fun with Flags: My Top 10 Resources for JVM Flags | foojay","description":"Resources on JVM command line arguments are scattered and hard to find, here is aconsolidated list so that others don't have to scour the internet as I did!","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:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/","og_locale":"en_US","og_type":"article","og_title":"Fun with Flags: My Top 10 Resources for JVM Flags | foojay","og_description":"Resources on JVM command line arguments are scattered and hard to find, here is aconsolidated list so that others don't have to scour the internet as I did!","og_url":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/","og_site_name":"foojay","article_published_time":"2020-06-08T08:21:02+00:00","article_modified_time":"2021-01-29T22:34:03+00:00","og_image":[{"width":1500,"height":1499,"url":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/06\/Logo.png","type":"image\/png"}],"author":"Betsy Rhodes","twitter_misc":{"Written by":"Betsy Rhodes","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#article","isPartOf":{"@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/"},"author":{"name":"Betsy Rhodes","@id":"https:\/\/foojay.io\/#\/schema\/person\/d863d0aad2f82b3c6f66d9b647efd1e4"},"headline":"Fun with Flags: My Top 10 Resources for JVM Flags","datePublished":"2020-06-08T08:21:02+00:00","dateModified":"2021-01-29T22:34:03+00:00","mainEntityOfPage":{"@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/"},"wordCount":562,"commentCount":0,"publisher":{"@id":"https:\/\/foojay.io\/#organization"},"image":{"@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#primaryimage"},"thumbnailUrl":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/06\/Logo.png","keywords":["Java","JDK","OpenJDK"],"articleSection":["Performance"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/","url":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/","name":"Fun with Flags: My Top 10 Resources for JVM Flags | foojay","isPartOf":{"@id":"https:\/\/foojay.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#primaryimage"},"image":{"@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#primaryimage"},"thumbnailUrl":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/06\/Logo.png","datePublished":"2020-06-08T08:21:02+00:00","dateModified":"2021-01-29T22:34:03+00:00","description":"Resources on JVM command line arguments are scattered and hard to find, here is aconsolidated list so that others don't have to scour the internet as I did!","breadcrumb":{"@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#primaryimage","url":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/06\/Logo.png","contentUrl":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/06\/Logo.png","width":1500,"height":1499,"caption":"Foojay.io Logo"},{"@type":"BreadcrumbList","@id":"https:\/\/foojay.io\/today\/top-10-fun-with-jvm-flags\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/foojay.io\/"},{"@type":"ListItem","position":2,"name":"Fun with Flags: My Top 10 Resources for JVM Flags"}]},{"@type":"WebSite","@id":"https:\/\/foojay.io\/#website","url":"https:\/\/foojay.io\/","name":"foojay","description":"a place for friends of OpenJDK","publisher":{"@id":"https:\/\/foojay.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/foojay.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/foojay.io\/#organization","name":"foojay","url":"https:\/\/foojay.io\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/foojay.io\/#\/schema\/logo\/image\/","url":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/04\/cropped-Favicon.png","contentUrl":"https:\/\/foojay.io\/wp-content\/uploads\/2020\/04\/cropped-Favicon.png","width":512,"height":512,"caption":"foojay"},"image":{"@id":"https:\/\/foojay.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/foojay2020"]},{"@type":"Person","@id":"https:\/\/foojay.io\/#\/schema\/person\/d863d0aad2f82b3c6f66d9b647efd1e4","name":"Betsy Rhodes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/3bada436eedf81a70a6003e38904e21f1ac8a6d4d67b4993337f35c71849ef12?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3bada436eedf81a70a6003e38904e21f1ac8a6d4d67b4993337f35c71849ef12?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3bada436eedf81a70a6003e38904e21f1ac8a6d4d67b4993337f35c71849ef12?s=96&d=mm&r=g","caption":"Betsy Rhodes"},"description":"Sr. Software Engineer at Azul","url":"https:\/\/foojay.io\/today\/author\/betsy\/"}]}},"_links":{"self":[{"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/posts\/9207","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/comments?post=9207"}],"version-history":[{"count":0,"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/posts\/9207\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/media\/9212"}],"wp:attachment":[{"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/media?parent=9207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/categories?post=9207"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/foojay.io\/wp-json\/wp\/v2\/tags?post=9207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}