diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index ee088c357a..263d2af089 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -62,6 +62,7 @@
spring-boot-properties-3
spring-boot-property-exp
spring-boot-runtime
+ spring-boot-runtime-2
spring-boot-security
spring-boot-springdoc
spring-boot-swagger
diff --git a/spring-boot-modules/spring-boot-runtime-2/README.md b/spring-boot-modules/spring-boot-runtime-2/README.md
new file mode 100644
index 0000000000..f997f2473d
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/README.md
@@ -0,0 +1,6 @@
+## Spring Boot Runtime 2
+
+This module contains articles about administering a Spring Boot runtime
+
+### Relevant Articles:
+ -
diff --git a/spring-boot-modules/spring-boot-runtime-2/pom.xml b/spring-boot-modules/spring-boot-runtime-2/pom.xml
new file mode 100644
index 0000000000..8f6351165a
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+
+ com.baeldung.spring-boot-modules
+ spring-boot-modules
+ 1.0.0-SNAPSHOT
+ ../
+
+
+ spring-boot-runtime-2
+ jar
+
+ spring-boot-runtime-2
+ Demo project for Spring Boot
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+ ${project.artifactId}
+
+
+ src/main/resources/heap
+ ${project.build.directory}
+ true
+
+ ${project.name}.conf
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ com.baeldung.heap.HeapSizeDemoApplication
+
+
+
+
+ true
+
+ -Xms256m
+ -Xmx1g
+
+
+
+
+
+
diff --git a/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/HeapSizeDemoApplication.java b/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/HeapSizeDemoApplication.java
new file mode 100644
index 0000000000..60d4bf7bab
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/HeapSizeDemoApplication.java
@@ -0,0 +1,12 @@
+package com.baeldung.heap;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class HeapSizeDemoApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(HeapSizeDemoApplication.class, args);
+ }
+}
diff --git a/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/MemoryStats.java b/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/MemoryStats.java
new file mode 100644
index 0000000000..0d2f471a12
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/MemoryStats.java
@@ -0,0 +1,31 @@
+package com.baeldung.heap;
+
+public class MemoryStats {
+ private long heapSize;
+ private long heapMaxSize;
+ private long heapFreeSize;
+
+ public long getHeapSize() {
+ return heapSize;
+ }
+
+ public void setHeapSize(long heapSize) {
+ this.heapSize = heapSize;
+ }
+
+ public long getHeapMaxSize() {
+ return heapMaxSize;
+ }
+
+ public void setHeapMaxSize(long heapMaxSize) {
+ this.heapMaxSize = heapMaxSize;
+ }
+
+ public long getHeapFreeSize() {
+ return heapFreeSize;
+ }
+
+ public void setHeapFreeSize(long heapFreeSize) {
+ this.heapFreeSize = heapFreeSize;
+ }
+}
diff --git a/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/MemoryStatusController.java b/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/MemoryStatusController.java
new file mode 100644
index 0000000000..293747fbd1
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/src/main/java/com/baeldung/heap/MemoryStatusController.java
@@ -0,0 +1,20 @@
+package com.baeldung.heap;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+public class MemoryStatusController {
+
+ @GetMapping("memory-status")
+ public MemoryStats getMemoryStatistics() {
+ MemoryStats stats = new MemoryStats();
+ stats.setHeapSize(Runtime.getRuntime()
+ .totalMemory());
+ stats.setHeapMaxSize(Runtime.getRuntime()
+ .maxMemory());
+ stats.setHeapFreeSize(Runtime.getRuntime()
+ .freeMemory());
+ return stats;
+ }
+}
diff --git a/spring-boot-modules/spring-boot-runtime-2/src/main/resources/heap/spring-boot-runtime-2.conf b/spring-boot-modules/spring-boot-runtime-2/src/main/resources/heap/spring-boot-runtime-2.conf
new file mode 100644
index 0000000000..3bfde4e3d9
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/src/main/resources/heap/spring-boot-runtime-2.conf
@@ -0,0 +1 @@
+JAVA_OPTS="-Xms512m -Xmx1024m"
\ No newline at end of file
diff --git a/spring-boot-modules/spring-boot-runtime-2/src/test/java/com/baeldung/heap/MemoryStatusControllerIntegrationTest.java b/spring-boot-modules/spring-boot-runtime-2/src/test/java/com/baeldung/heap/MemoryStatusControllerIntegrationTest.java
new file mode 100644
index 0000000000..2e744285d8
--- /dev/null
+++ b/spring-boot-modules/spring-boot-runtime-2/src/test/java/com/baeldung/heap/MemoryStatusControllerIntegrationTest.java
@@ -0,0 +1,32 @@
+package com.baeldung.heap;
+
+import static org.hamcrest.Matchers.notANumber;
+import static org.hamcrest.Matchers.not;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.web.servlet.MockMvc;
+
+@RunWith(SpringRunner.class)
+@WebMvcTest(MemoryStatusController.class)
+public class MemoryStatusControllerIntegrationTest {
+
+ @Autowired
+ private MockMvc mvc;
+
+ @Test
+ public void whenGetMemoryStatistics_thenReturnJsonArray() throws Exception {
+ mvc.perform(get("/memory-status").contentType(MediaType.APPLICATION_JSON))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("heapSize", not(notANumber())))
+ .andExpect(jsonPath("heapMaxSize", not(notANumber())))
+ .andExpect(jsonPath("heapFreeSize", not(notANumber())));
+ }
+}