{"id":44665,"date":"2016-07-06T20:10:12","date_gmt":"2016-07-06T17:10:12","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=44665"},"modified":"2020-04-10T19:45:57","modified_gmt":"2020-04-10T16:45:57","slug":"tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/","title":{"rendered":"Tuning Configs of Cloud Foundry&#8217;s Java Buildpack to Avoid Out-of-Memory Errors"},"content":{"rendered":"<p>Java apps created in accordance with <a href=\"https:\/\/12factor.net\/\" target=\"_blank\" rel=\"noopener noreferrer\">12-factors<\/a> are supposed to run in Cloud Foundry without significant modifications. However, sometimes the defaults provided by <a href=\"https:\/\/docs.cloudfoundry.org\/buildpacks\/\" target=\"_blank\" rel=\"noopener noreferrer\">the public buildpacks<\/a> don&#8217;t work. In this post, we will look at two ways to resolve out-of-memory errors.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#Memory_allocation_in_a_Java_buildpack\" >Memory allocation in a Java buildpack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#Solution_1_Creating_a_custom_buildpack\" >Solution #1: Creating a custom buildpack<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#Solution_2_Overriding_buildpack_configuration\" >Solution #2: Overriding buildpack configuration<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#About_the_author\" >About the author<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Memory_allocation_in_a_Java_buildpack\"><\/span>Memory allocation in a Java buildpack<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Most Java applications do not need any additional memory configuration to run in a Cloud Foundry environment. In general, it is enough to set the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">MEMORY_LIMIT<\/code> environment variable or provide a <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">manifest.yml<\/code> file with a required value.<\/p>\n<p><code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">MEMORY_LIMIT<\/code> specifies how much memory will be allocated for a container that will run the application. A Java buildpack uses this value to control the Java Runtime Environment&#8217;s (JRE) use of various regions of memory: <i>heap<\/i>, <i>metaspace<\/i>, <i>native<\/i>, and <i>stack<\/i>.<\/p>\n<p>Memory allocated for these regions is calculated by the <a href=\"https:\/\/github.com\/cloudfoundry\/java-buildpack-memory-calculator\" target=\"_blank\" rel=\"noopener noreferrer\">memory calculator<\/a>, using memory-related properties of the Java buildpack.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png\" target=\"_blank\" rel=\"noopener noreferrer\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png\" alt=\"tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\" width=\"640\" class=\"aligncenter size-full wp-image-44667\" \/><\/a><small>Employing memory-related properties to calculate allocation<\/small><\/center><\/p>\n<p>By default, the Java buildpack specifies the following values for memory distribution.<\/p>\n<ul>\n<li>heap: 75%<\/li>\n<li>metaspace: 10%<\/li>\n<li>native: 10%<\/li>\n<li>stack: 5%<\/li>\n<\/ul>\n<p>Check out the <a href=\"https:\/\/github.com\/cloudfoundry\/java-buildpack\/blob\/main\/docs\/jre-open_jdk_jre.md#configuration\" target=\"_blank\" rel=\"noopener noreferrer\">readme file<\/a> of the OpenJDK JRE for an explanation of Java Runtime Environment&#8217;s memory sizes and weights, as well as how the Java buildpack calculates and allocates memory to the JRE for your app.<\/p>\n<p>When a Java application is deployed and the native memory is not sufficient, the container will restart before it does its first full garbage collection. This is a clear sign of insufficient allocation of native memory.<\/p>\n<p>There are two ways to solve this issue: a complicated one and a simple one.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Solution_1_Creating_a_custom_buildpack\"><\/span>Solution #1: Creating a custom buildpack<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The first (complicated) way is to create a custom buildpack with updated memory-related JRE options and specify this buildpack in the deployment manifest. Cloud Foundry docs provide exhaustive <a href=\"https:\/\/docs.cloudfoundry.org\/buildpacks\/custom.html\" target=\"_blank\" rel=\"noopener noreferrer\">instructions<\/a> on how to do that.<\/p>\n<p>This approach has some serious flaws. Creating and maintaining a separate custom version of the Java buildpack just for a single application is not very efficient. It is also far from being trivial.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Solution_2_Overriding_buildpack_configuration\"><\/span>Solution #2: Overriding buildpack configuration<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The second, simpler approach is to override buildpack configuration with an environment variable. The name of the variable needs to match the configuration file you want to override, but without the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">.yml<\/code> extension and with the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">JBP_CONFIG<\/code> prefix. The value of the variable must be a valid inline YAML.<\/p>\n<p>In case of a memory-heuristics property in <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">open_jdk_jre.yml<\/code>, the variable might look like in the sample below.<\/p>\n<pre style=\"padding-left: 30px;\">JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {memory_heuristics: {heap: 65, metaspace: 20}}]'<\/pre>\n<p>It can be passed to Cloud Foundry directly.<\/p>\n<pre style=\"padding-left: 30px;\">cf set-env [APPLICATION_NAME] JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {memory_heuristics: {heap: 65, metaspace: 20}}]\u2019<\/pre>\n<p>Note that you will have to run this command each time the app is redeployed. To avoid that and make the environment reproducible, specify the variable in the application&#8217;s manifest.<\/p>\n<pre style=\"padding-left: 30px;\">env:\r\n    JBP_CONFIG_OPEN_JDK_JRE: '[memory_calculator: {memory_heuristics: {heap: 65, metaspace: 20}}]'<\/pre>\n<p>This way, the environment variables won\u2019t get lost if the app gets deployed elsewhere. Don\u2019t forget to restage the app after editing the files.<\/p>\n<p>In a Cloud Foundry environment where apps are automatically restarted, you may not even notice that there is an issue with memory allocation\u2014unless you are specifically looking for it. So, make sure the heap and native memory spaces are sized appropriately for the app. Specifying environment variables in application&#8217;s manifest should be the most efficient way of doing that.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_author\"><\/span>About the author<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/07\/Andrey-Bushik.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/07\/Andrey-Bushik.png\" alt=\"\" width=\"120\" class=\"alignnone size-full wp-image-53181\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><strong>Andrei Bushyk<\/strong> is Senior Software Developer with hands-on experience in delivering multi-tier applications. He is profoundly knowledgeable about all aspects of a software development life cycle. Andrei\u2019s technical proficiency enables him to accomplish high-level tasks, as well as efficiently perform tech lead and team lead functions. He also has expertise in such big data technologies as Cloudera, Apache Hadoop, Apache Crunch, and Apache Kafka. Andrei is a Sun Certified specialist for the Java platform.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/creating-a-custom-cloud-foundry-buildpack-from-scratch-whats-under-the-hood\/\">Creating a Custom Cloud Foundry Buildpack from Scratch: What\u2019s Under the Hood<\/a><\/li>\n<\/ul>\n<hr \/>\n<p><center><small>This post was written by <b>Andrei Bushyk<\/b> and edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java apps created in accordance with 12-factors are supposed to run in Cloud Foundry without significant modifications. However, sometimes the defaults provided by the public buildpacks don&#8217;t work. In this post, we will look at two ways to resolve out-of-memory errors.<\/p>\n<p>&nbsp;<\/p>\n<p>Memory allocation in a Java buildpack<\/p>\n<p>Most Java applications do not [&#8230;]<\/p>\n","protected":false},"author":5,"featured_media":44667,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,206],"class_list":["post-44665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-oss-cloud-foundry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tuning Configs of Cloud Foundry&#039;s Java Buildpack to Avoid Out-of-Memory Errors | Altoros<\/title>\n<meta name=\"description\" content=\"This tutorial overviews how to override configurations either with an environment variable or via creating a custom buildpack.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tuning Configs of Cloud Foundry&#039;s Java Buildpack to Avoid Out-of-Memory Errors | Altoros\" \/>\n<meta property=\"og:description\" content=\"Java apps created in accordance with 12-factors are supposed to run in Cloud Foundry without significant modifications. However, sometimes the defaults provided by the public buildpacks don&#8217;t work. In this post, we will look at two ways to resolve out-of-memory errors. &nbsp; Memory allocation in a Java buildpack Most Java applications do not [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-07-06T17:10:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-04-10T16:45:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1166\" \/>\n\t<meta property=\"og:image:height\" content=\"862\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Alex Khizhniak\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alex Khizhniak\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/\",\"name\":\"Tuning Configs of Cloud Foundry's Java Buildpack to Avoid Out-of-Memory Errors | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png\",\"datePublished\":\"2016-07-06T17:10:12+00:00\",\"dateModified\":\"2020-04-10T16:45:57+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png\",\"width\":1166,\"height\":862},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tuning Configs of Cloud Foundry&#8217;s Java Buildpack to Avoid Out-of-Memory Errors\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420\",\"name\":\"Alex Khizhniak\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg\",\"caption\":\"Alex Khizhniak\"},\"description\":\"Alex Khizhniak is Director of Technical Content Strategy at Altoros and a cofounder of a local Java User Group. Managing distributed teams since 2004, he has gained experience as a journalist, an editor-in-chief, a technical writer, a technology evangelist, a project manager, and a product owner. Alex is obsessed with AI\/ML, data science, data integration, ETL\/DWH, data quality, databases (SQL\/NoSQL), big data, IoT, and BI. The articles and industry reports he created or helped to publish reached out to 3,000,000+ tech-savvy readers. Some of the pieces were covered on TechRepublic, ebizQ, NetworkWorld, CIO.com, etc. Find him on Twitter at @alxkh.\",\"sameAs\":[\"https:\/\/x.com\/https:\/\/twitter.com\/alxkh\"],\"url\":\"https:\/\/www.altoros.com\/blog\/author\/alex\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tuning Configs of Cloud Foundry's Java Buildpack to Avoid Out-of-Memory Errors | Altoros","description":"This tutorial overviews how to override configurations either with an environment variable or via creating a custom buildpack.","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:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/","og_locale":"en_US","og_type":"article","og_title":"Tuning Configs of Cloud Foundry's Java Buildpack to Avoid Out-of-Memory Errors | Altoros","og_description":"Java apps created in accordance with 12-factors are supposed to run in Cloud Foundry without significant modifications. However, sometimes the defaults provided by the public buildpacks don&#8217;t work. In this post, we will look at two ways to resolve out-of-memory errors. &nbsp; Memory allocation in a Java buildpack Most Java applications do not [...]","og_url":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/","og_site_name":"Altoros","article_published_time":"2016-07-06T17:10:12+00:00","article_modified_time":"2020-04-10T16:45:57+00:00","og_image":[{"width":1166,"height":862,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png","type":"image\/png"}],"author":"Alex Khizhniak","twitter_misc":{"Written by":"Alex Khizhniak","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/","url":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/","name":"Tuning Configs of Cloud Foundry's Java Buildpack to Avoid Out-of-Memory Errors | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png","datePublished":"2016-07-06T17:10:12+00:00","dateModified":"2020-04-10T16:45:57+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/06\/tuning-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors.png","width":1166,"height":862},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/tuning-configuration-of-the-cloud-foundry-java-buildpack-to-avoid-out-of-memory-errors\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tuning Configs of Cloud Foundry&#8217;s Java Buildpack to Avoid Out-of-Memory Errors"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/3d914db6ad1b2908c32c0dc5dcabc420","name":"Alex Khizhniak","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/06\/druzya-edit1-150x150.jpg","caption":"Alex Khizhniak"},"description":"Alex Khizhniak is Director of Technical Content Strategy at Altoros and a cofounder of a local Java User Group. Managing distributed teams since 2004, he has gained experience as a journalist, an editor-in-chief, a technical writer, a technology evangelist, a project manager, and a product owner. Alex is obsessed with AI\/ML, data science, data integration, ETL\/DWH, data quality, databases (SQL\/NoSQL), big data, IoT, and BI. The articles and industry reports he created or helped to publish reached out to 3,000,000+ tech-savvy readers. Some of the pieces were covered on TechRepublic, ebizQ, NetworkWorld, CIO.com, etc. Find him on Twitter at @alxkh.","sameAs":["https:\/\/x.com\/https:\/\/twitter.com\/alxkh"],"url":"https:\/\/www.altoros.com\/blog\/author\/alex\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/44665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=44665"}],"version-history":[{"count":9,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/44665\/revisions"}],"predecessor-version":[{"id":53183,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/44665\/revisions\/53183"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/44667"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=44665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=44665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=44665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}