什么是Spring Boot默认内存设置?

时间:2016-07-25 09:55:14

标签: memory-management spring-boot

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

2 个答案:

答案 0 :(得分:11)

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

默认堆大小

如果您的物理内存大小高达192兆字节(MB),则默认最大堆大小是物理内存的一半。

如果您的物理内存大小超过192兆字节,则默认最大堆大小是物理内存的四分之一。

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

除非程序创建足够的对象来要求它,否则JVM实际上不会使用最大堆大小。在JVM初始化期间分配一个小得多的数量,称为初始堆大小。此数量至少为8 MB,否则为物理内存的1/64,最大物理内存大小为1 GB。

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

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

Linux的:

  

java -XX:+ PrintFlagsFinal -version | grep HeapSize

视窗:

  

java -XX:+ PrintFlagsFinal -version | findstr HeapSize

参考:https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/parallel.html#default_heap_size

默认线程堆栈大小

默认线程堆栈大小因JVM,OS和环境变量而异。

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

在Linux中:

  

java -XX:+ PrintFlagsFinal -version | grep ThreadStackSize

在Windows中:

  

java -XX:+ PrintFlagsFinal -version | findstr ThreadStackSize

答案 1 :(得分:2)

如果在Java启动过程中未提供“ Xmx”选项,通常其占总物理内存的25%

在Unix / Linux系统上,您可以这样做

java -XX:+PrintFlagsFinal -version | grep HeapSize

在Windows上,使用以下命令找出默认值

java -XX:+PrintFlagsFinal -version | findstr HeapSize

查找选项MaxHeapSize(对于-Xmx)和InitialHeapSize对于-Xms。

结果输出以字节为单位。