Memory management Spring引导默认内存设置是什么?

Memory management Spring引导默认内存设置是什么?,memory-management,spring-boot,Memory Management,Spring Boot,例如,如果我在没有定义的情况下从IDE运行/调试simple spring boot应用程序,那么将设置初始堆大小、最大堆大小和堆栈大小(-Xms,-Xmx,-Xss)的大小 默认情况下,Spring Boot应用程序将使用JVM默认内存设置 默认堆大小 如果物理内存大小高达192 MB,则默认最大堆大小为物理内存的一半 如果物理内存大小超过192 MB,则默认最大堆大小为物理内存的四分之一 例如,如果您的计算机有128 MB的物理内存,则最大堆大小为64 MB,大于或等于1 GB的物理内存将导

例如,如果我在没有定义的情况下从IDE运行/调试simple spring boot应用程序,那么将设置初始堆大小、最大堆大小和堆栈大小(-Xms,-Xmx,-Xss)的大小

默认情况下,Spring Boot应用程序将使用JVM默认内存设置

默认堆大小

如果物理内存大小高达192 MB,则默认最大堆大小为物理内存的一半

如果物理内存大小超过192 MB,则默认最大堆大小为物理内存的四分之一

例如,如果您的计算机有128 MB的物理内存,则最大堆大小为64 MB,大于或等于1 GB的物理内存将导致最大堆大小为256 MB

JVM实际上不会使用最大堆大小,除非您的程序创建了足够的对象来需要它。在JVM初始化期间,分配的量要小得多,称为初始堆大小。该容量至少为8MB,或者是物理内存的1/64,最大为1GB

分配给年轻一代的最大空间量是堆总大小的三分之一

您可以使用以下命令检查特定于您的机器的默认值

Linux:

java-XX:+PrintFlagsFinal-version | grep HeapSize

窗口:

java-XX:+PrintFlagsFinal-version | findstr HeapSize

参考:

默认线程堆栈大小

默认线程堆栈大小随JVM、OS和环境变量而变化

要了解平台上的默认线程堆栈大小,请使用

在Linux中:

java-XX:+PrintFlagsFinal-version | grep ThreadStackSize

在Windows中:

java-XX:+PrintFlagsFinal-version | findstr ThreadStackSize


如果在java启动期间没有提供“Xmx”选项,通常占总物理内存的25%

在Unix/Linux系统上,您可以

java -XX:+PrintFlagsFinal -version | grep HeapSize
在Windows上,使用以下命令查找默认值

java -XX:+PrintFlagsFinal -version | findstr HeapSize
查找MaxHeapSize(对于-Xmx)和InitialHeapSize(对于-Xms)选项


结果输出以字节为单位。

如果您的IDE没有任何特定设置,它将使用Java默认设置,这取决于系统和Java版本。