Spring Boot 默認內存設置是什麼?
一、概述
在本教程中,我們將了解Spring Boot 應用程序使用的默認內存設置。
一般來說,Spring 沒有任何特定於內存的配置,它使用底層 Java 進程的配置運行。下面是我們可以配置 Java 應用程序內存的方法。
2.內存設置
Java 進程或 JVM 的內存在堆、堆棧、元空間、JIT 代碼緩存和共享庫之間劃分。
2.1。堆
堆是對象所在的內存部分,直到被垃圾收集器收集為止。
最小堆的默認值為8 Mb 或 8 Mb 到 1 Gb 範圍內的物理內存的 1/64 。
對於大於 192 MB 的物理內存,最大堆的默認值為物理內存的 1/4,否則為物理內存的 1/2 。
在堆內部,我們有托兒所大小限制,當超過該限制時,會導致新一代垃圾收集運行。它的默認值是特定於平台的。
我們也有保留區域限制。它是總堆大小的百分比,當達到時會導致足夠長的存活對像從年輕代提升到老年代。其默認值為 25%。
從 Java 8 開始,我們還將元空間作為存儲所有類元數據的堆的一部分。默認情況下,它的最小值是平台相關的,最大值是無限的。
要覆蓋最小堆、最大堆和元空間大小的默認值,請參閱這篇關於配置堆大小的帖子。
我們可以使用-Xns
參數覆蓋 Nursery 大小限制。由於 Nursery 是堆的一部分,它的值不應大於-Xmx
值:
java -Xns:10m MyApplication
我們還可以使用XXkeepAreaRatio
參數覆蓋保留區域限制的默認值。例如,我們可以將其設置為 10 %:
java -XXkeepAreaRatio:10 MyApplication
最後,這是我們在 Linux 上檢查堆大小的方法:
java -XX:+PrintFlagsFinal -version | grep HeapSize
在 Windows 上檢查堆大小的相同命令將是:
java -XX:+PrintFlagsFinal -version | findstr HeapSize
2.2.堆
它是提供給每個線程執行的內存量。它的默認值是特定於平台的。
因此,我們可以使用-Xss
參數定義線程堆棧大小。例如,我們可以將其分配為 512 kB:
java -Xss:512k MyApplication
然後我們可以檢查 Linux 上的線程堆棧大小:
java -XX:+PrintFlagsFinal -version | grep ThreadStackSize
或者在 Windows 機器上做同樣的事情:
java -XX:+PrintFlagsFinal -version | findstr ThreadStackSize
三、結論
在本文中,我們了解了 Java 應用程序可用的各種堆和堆棧內存配置選項的默認值。
因此,在啟動我們的 Spring Boot 應用程序時,我們可以根據我們的要求定義這些參數。