一、概述
在本教程中,我们将了解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 应用程序时,我们可以根据我们的要求定义这些参数。
0 评论