{"id":13554,"date":"2017-09-05T11:21:58","date_gmt":"2017-09-05T16:21:58","guid":{"rendered":"https:\/\/stackify.com\/?p=13554"},"modified":"2023-03-18T11:13:46","modified_gmt":"2023-03-18T11:13:46","slug":"java-heap-vs-stack","status":"publish","type":"post","link":"https:\/\/stackify.com\/java-heap-vs-stack\/","title":{"rendered":"Java Heap Space vs. Stack Memory: How Java Applications Allocate Memory"},"content":{"rendered":"<p>Java applications need a certain amount of RAM on a computer to run. Each time an object or variable is declared, it needs more RAM. Simply designating enough memory to hold every value declared and run each method would lead to a bloated application.<\/p>\n<p>To keep application memory requirements lean, it is partitioned in ways that require less memory and allows the application to run more quickly.<\/p>\n<p>The Java Virtual Machine (JVM) divides memory between Java Heap Space and Java Stack Memory in a way that only uses memory that\u2019s needed.<\/p>\n<h3>What is Java Heap Space<\/h3>\n<p>It is created by the Java Virtual Machine when it starts. The memory is used as long as the application is running. Java runtime uses it to allocate memory to objects and <a href=\"http:\/\/docs.oracle.com\/javase\/6\/docs\/technotes\/tools\/windows\/jdkfiles.html\" target=\"_blank\" rel=\"noopener noreferrer\">Java Runtime Environment (JRE) classes<\/a>.<\/p>\n<p>When an object is created, it is always created in Heap and has global access. That means all objects can be referenced from anywhere in the application.<\/p>\n<p>It is managed by two concepts: <a href=\"https:\/\/stackify.com\/what-is-java-garbage-collection\/\">Garbage collection<\/a> and young-generation, old-generation.<\/p>\n<p><a href=\"https:\/\/docs.oracle.com\/cd\/E13150_01\/jrockit_jvm\/jrockit\/geninfo\/diagnos\/garbage_collect.html#wp1086087\" target=\"_blank\" rel=\"noopener noreferrer\">Garbage collection<\/a>&nbsp;works to free memory by clearing any by objects without any references in the methods. These are objects that are no longer being used. Clearing them ensures they don\u2019t take up space in the Heap.<\/p>\n<p>Young-generation, old-generation helps prioritize objects for garbage collection by dividing Java Heap Space into two generations.<\/p>\n<p>The nursery is the younger generation where the new objects are stored. When the nursery is full, garbage collection cleans it out. Note only the memory space for the nursery is full. There is still memory in the old generation.<\/p>\n<p>The old generation is home to objects have been around long enough. When the old generation runs out of room, garbage collection removes the objects not being used in the old space. Again, only part of the Heap is full when old garbage collection happens. There is still room in the nursery.<\/p>\n<h3>What is Java Stack Memory?<\/h3>\n<p>This is the temporary memory where variable values are stored when their methods are invoked. After the method is finished, the memory containing those values is cleared to make room for new methods.<\/p>\n<p>When a new method is invoked, a new block of memory will be created in the Stack. This new block will store the temporary values invoked by the method and references to objects stored in the Heap that are being used by the method.<\/p>\n<p>Any values in this block are only accessible by the current method and will not exist once it ends.<\/p>\n<p>When the method ends, that block will be erased. The next method invoked will use that empty block.<\/p>\n<p>This \u201clast in, first out\u201d method makes it easy to find the values needed and allows fast access to those values.<\/p>\n<h3>How They&#8217;re Used in a Java Application<\/h3>\n<p>Let\u2019s look at a very simple example of a Java application to see how memory is allocated.<\/p>\n<pre class=\"prettyprint\">package com.journaldev.test;package com.journaldev.test;\npublic class Memory {\n public static void main(String[] args) { \/\/ Line 1 int i=1; \/\/ Line 2 Object obj = new Object(); \/\/ Line 3 Memory mem = new Memory(); \/\/ Line 4 mem.foo(obj); \/\/ Line 5 } \/\/ Line 9\n private void foo(Object param) { \/\/ Line 6 String str = param.toString(); \/\/\/\/ Line 7 System.out.println(str); } \/\/ Line 8\n}<\/pre>\n<p>In the above example from <a href=\"http:\/\/www.journaldev.com\/4098\/java-heap-space-vs-stack-memory\" target=\"_blank\" rel=\"noopener noreferrer\">JournalDev.com<\/a>, the use of Stack and Heap is explained as follows:<\/p>\n<ul>\n<li>All Runtime classes are loaded into the Heap Space when the program is run.<\/li>\n<li>Java Runtime creates Stack memory to be used by&nbsp;main() method thread when it is found at line 1. At line 2, a primitive local variable is created, which is stored in the Stack memory of main() method.<\/li>\n<li>Since an Object is created at line 3,&nbsp;it\u2019s created in Heap memory and the reference for it is stored in Stack memory. At line 4, a similar process occurs when a Memory object is created.<\/li>\n<li>When&nbsp;foo() method is called at line 5, a block in the top of the Stack is created for it.&nbsp;Since Java is pass by value, a new reference to Object is created in the foo() stack block in line 6.<\/li>\n<li>At line 7, a string is created, which goes in the String Pool in the Heap space, while a reference for it is created in the foo() stack space. At line 8, foo() method is terminated, and the memory block allocated for it in the Stack is freed.<\/li>\n<li>Finally, at line 9, main() method terminates, and the Stack memory created for it is destroyed. Because the program ends at this line, Java Runtime frees all the memory and ends the execution of the program.<\/li>\n<\/ul>\n<h3>Key Differences<\/h3>\n<ul>\n<li>Java Heap Space is used throughout the application, but Stack is only used for the method \u2014 or methods \u2014 currently running.<\/li>\n<li>The Heap Space contains all objects are created, but Stack contains any reference to those objects.<\/li>\n<li>Objects stored in the Heap can be accessed throughout the application. Primitive local variables are only accessed the Stack Memory blocks that contain their methods.<\/li>\n<li>Memory allocation in the Heap Space is accessed through a complex, young-generation, old-generation system. Stack is accessed through a last-in, first-out (LIFO) memory allocation system.<\/li>\n<li>Heap Space exists as long as the application runs and is larger than Stack, which is temporary, but faster.<\/li>\n<\/ul>\n<h3>Additional Resources and Tutorials<\/h3>\n<p>To learn more, check out the following resources:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=_y7k_0edvuY&amp;feature=youtu.be\" target=\"_blank\" rel=\"noopener noreferrer\">Java Pass By Value Stack Heap Memory Explanation<\/a> (YouTube)<\/li>\n<li><a href=\"https:\/\/info.stackify.com\/buildbetter-2.2-the-comprehensive-java-developers-guide\" target=\"_blank\" rel=\"noopener noreferrer\">Comprehensive Java Developer\u2019s Guide<\/a> (DZone)<\/li>\n<li><a href=\"http:\/\/www.artima.com\/underthehood\/gc.html\" target=\"_blank\" rel=\"noopener noreferrer\">Java&#8217;s Garbage-Collected Heap<\/a> (artima developer)<\/li>\n<li><a href=\"https:\/\/www.guru99.com\/java-stack-heap.html\" target=\"_blank\" rel=\"noopener noreferrer\">Java Heap and Stack<\/a> (Guru99)<\/li>\n<li><a href=\"http:\/\/javabeat.net\/jvm-memory\/\" target=\"_blank\" rel=\"noopener noreferrer\">JVM Memory Management<\/a> (JavaBeat)<\/li>\n<\/ul>\n<p>Stack and heap are two ways Java allocates memory. Understanding when and how they work is critical for developing better Java programs.<\/p>\n<p>It\u2019s also helpful to understand how allocation works when dealing with&nbsp;<a href=\"https:\/\/stackify.com\/java-memory-leaks-solutions\/\">memory leaks<\/a>. Additional tools for Java for you to explore include <a href=\"https:\/\/stackify.com\/prefix\">Prefix<\/a> to write better Java code for free and the full lifecycle APM, <a href=\"https:\/\/stackify.com\/retrace\">Retrace<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java applications need a certain amount of RAM on a computer to run. Each time an object or variable is declared, it needs more RAM. Simply designating enough memory to hold every value declared and run each method would lead to a bloated application. To keep application memory requirements lean, it is partitioned in ways [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":38233,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7],"tags":[40],"class_list":["post-13554","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developers","tag-java"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v25.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Heap vs. Stack: Code Examples, Tutorials &amp; More<\/title>\n<meta name=\"description\" content=\"Stack and heap are two ways Java allocates memory. Understand when and how they work so you can build better Java programs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/stackify.com\/java-heap-vs-stack\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heap vs. Stack: Code Examples, Tutorials &amp; More\" \/>\n<meta property=\"og:description\" content=\"Stack and heap are two ways Java allocates memory. Understand when and how they work so you can build better Java programs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/stackify.com\/java-heap-vs-stack\/\" \/>\n<meta property=\"og:site_name\" content=\"Stackify\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Stackify\/\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-05T16:21:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-18T11:13:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"881\" \/>\n\t<meta property=\"og:image:height\" content=\"441\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Angela Stringfellow\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@stackify\" \/>\n<meta name=\"twitter:site\" content=\"@stackify\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Angela Stringfellow\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/\"},\"author\":{\"name\":\"Angela Stringfellow\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/person\/3f77f07baf0ec3f8edf1bcc37672a77c\"},\"headline\":\"Java Heap Space vs. Stack Memory: How Java Applications Allocate Memory\",\"datePublished\":\"2017-09-05T16:21:58+00:00\",\"dateModified\":\"2023-03-18T11:13:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/\"},\"wordCount\":929,\"publisher\":{\"@id\":\"https:\/\/stackify.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg\",\"keywords\":[\"Java\"],\"articleSection\":[\"Developer Tips, Tricks &amp; Resources\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/\",\"url\":\"https:\/\/stackify.com\/java-heap-vs-stack\/\",\"name\":\"Heap vs. Stack: Code Examples, Tutorials & More\",\"isPartOf\":{\"@id\":\"https:\/\/stackify.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg\",\"datePublished\":\"2017-09-05T16:21:58+00:00\",\"dateModified\":\"2023-03-18T11:13:46+00:00\",\"description\":\"Stack and heap are two ways Java allocates memory. Understand when and how they work so you can build better Java programs.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/stackify.com\/java-heap-vs-stack\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage\",\"url\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg\",\"contentUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg\",\"width\":881,\"height\":441},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/stackify.com\/#website\",\"url\":\"https:\/\/stackify.com\/\",\"name\":\"Stackify\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/stackify.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/stackify.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/stackify.com\/#organization\",\"name\":\"Stackify\",\"url\":\"https:\/\/stackify.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png\",\"contentUrl\":\"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png\",\"width\":1377,\"height\":430,\"caption\":\"Stackify\"},\"image\":{\"@id\":\"https:\/\/stackify.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Stackify\/\",\"https:\/\/x.com\/stackify\",\"https:\/\/www.instagram.com\/stackify\/\",\"https:\/\/www.linkedin.com\/company\/2596184\",\"https:\/\/www.youtube.com\/stackify\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/person\/3f77f07baf0ec3f8edf1bcc37672a77c\",\"name\":\"Angela Stringfellow\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/stackify.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ab30bf3f9d88045d4386d142355dea16?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ab30bf3f9d88045d4386d142355dea16?s=96&d=mm&r=g\",\"caption\":\"Angela Stringfellow\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Heap vs. Stack: Code Examples, Tutorials & More","description":"Stack and heap are two ways Java allocates memory. Understand when and how they work so you can build better Java programs.","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:\/\/stackify.com\/java-heap-vs-stack\/","og_locale":"en_US","og_type":"article","og_title":"Heap vs. Stack: Code Examples, Tutorials & More","og_description":"Stack and heap are two ways Java allocates memory. Understand when and how they work so you can build better Java programs.","og_url":"https:\/\/stackify.com\/java-heap-vs-stack\/","og_site_name":"Stackify","article_publisher":"https:\/\/www.facebook.com\/Stackify\/","article_published_time":"2017-09-05T16:21:58+00:00","article_modified_time":"2023-03-18T11:13:46+00:00","og_image":[{"width":881,"height":441,"url":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg","type":"image\/jpeg"}],"author":"Angela Stringfellow","twitter_card":"summary_large_image","twitter_creator":"@stackify","twitter_site":"@stackify","twitter_misc":{"Written by":"Angela Stringfellow","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/stackify.com\/java-heap-vs-stack\/#article","isPartOf":{"@id":"https:\/\/stackify.com\/java-heap-vs-stack\/"},"author":{"name":"Angela Stringfellow","@id":"https:\/\/stackify.com\/#\/schema\/person\/3f77f07baf0ec3f8edf1bcc37672a77c"},"headline":"Java Heap Space vs. Stack Memory: How Java Applications Allocate Memory","datePublished":"2017-09-05T16:21:58+00:00","dateModified":"2023-03-18T11:13:46+00:00","mainEntityOfPage":{"@id":"https:\/\/stackify.com\/java-heap-vs-stack\/"},"wordCount":929,"publisher":{"@id":"https:\/\/stackify.com\/#organization"},"image":{"@id":"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage"},"thumbnailUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg","keywords":["Java"],"articleSection":["Developer Tips, Tricks &amp; Resources"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/stackify.com\/java-heap-vs-stack\/","url":"https:\/\/stackify.com\/java-heap-vs-stack\/","name":"Heap vs. Stack: Code Examples, Tutorials & More","isPartOf":{"@id":"https:\/\/stackify.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage"},"image":{"@id":"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage"},"thumbnailUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg","datePublished":"2017-09-05T16:21:58+00:00","dateModified":"2023-03-18T11:13:46+00:00","description":"Stack and heap are two ways Java allocates memory. Understand when and how they work so you can build better Java programs.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/stackify.com\/java-heap-vs-stack\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stackify.com\/java-heap-vs-stack\/#primaryimage","url":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg","contentUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2017\/09\/Stack-vs-Heap-Header-1-881x441-1.jpg","width":881,"height":441},{"@type":"WebSite","@id":"https:\/\/stackify.com\/#website","url":"https:\/\/stackify.com\/","name":"Stackify","description":"","publisher":{"@id":"https:\/\/stackify.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/stackify.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/stackify.com\/#organization","name":"Stackify","url":"https:\/\/stackify.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stackify.com\/#\/schema\/logo\/image\/","url":"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png","contentUrl":"https:\/\/stackify.com\/wp-content\/uploads\/2024\/05\/logo-1.png","width":1377,"height":430,"caption":"Stackify"},"image":{"@id":"https:\/\/stackify.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Stackify\/","https:\/\/x.com\/stackify","https:\/\/www.instagram.com\/stackify\/","https:\/\/www.linkedin.com\/company\/2596184","https:\/\/www.youtube.com\/stackify"]},{"@type":"Person","@id":"https:\/\/stackify.com\/#\/schema\/person\/3f77f07baf0ec3f8edf1bcc37672a77c","name":"Angela Stringfellow","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/stackify.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ab30bf3f9d88045d4386d142355dea16?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ab30bf3f9d88045d4386d142355dea16?s=96&d=mm&r=g","caption":"Angela Stringfellow"}}]}},"_links":{"self":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts\/13554"}],"collection":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/comments?post=13554"}],"version-history":[{"count":1,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts\/13554\/revisions"}],"predecessor-version":[{"id":38234,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/posts\/13554\/revisions\/38234"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/media\/38233"}],"wp:attachment":[{"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/media?parent=13554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/categories?post=13554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackify.com\/wp-json\/wp\/v2\/tags?post=13554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}