Spring Boot 应用最少给多少内存才能启动?把 -Xmx 压到很小,进程常驻内存会不会跟着变小?G1 与 SerialGC 有区别吗?这篇在 Spring Boot 4.0.8 上把堆从 6 MB 逐步加到 256 MB 实测。
默认(G1) -Xmx 6m:失败(OutOfMemoryError:Java heap spaceException in thread "main" java.lang.OutOfMem) 默认(G1) -Xmx 8m:失败(OutOfMemoryError:Java heap space) 默认(G1) -Xmx 10m:启动成功,启动 1298 ms,RSS 147 MB,发 300 个请求之后 RSS 153 MB 默认(G1) -Xmx 12m:启动成功,启动 1563 ms,RSS 150 MB,发 300 个请求之后 RSS 155 MB 默认(G1) -Xmx 16m:启动成功,启动 1027 ms,RSS 133 MB,发 300 个请求之后 RSS 137 MB 默认(G1) -Xmx 32m:启动成功,启动 1040 ms,RSS 168 MB,发 300 个请求之后 RSS 173 MB 默认(G1) -Xmx 64m:启动成功,启动 1127 ms,RSS 184 MB,发 300 个请求之后 RSS 189 MB 默认(G1) -Xmx128m:启动成功,启动 862 ms,RSS 200 MB,发 300 个请求之后 RSS 216 MB SerialGC -Xmx 6m:失败(OutOfMemoryError:Java heap space) SerialGC -Xmx 8m:失败(OutOfMemoryError:Java heap space) SerialGC -Xmx 10m:启动成功,启动 1200 ms,RSS 148 MB,发 300 个请求之后 RSS 152 MB SerialGC -Xmx 12m:启动成功,启动 1084 ms,RSS 144 MB,发 300 个请求之后 RSS 148 MB SerialGC -Xmx 16m:启动成功,启动 1452 ms,RSS 139 MB,发 300 个请求之后 RSS 144 MB SerialGC -Xmx 32m:启动成功,启动 1132 ms,RSS 166 MB,发 300 个请求之后 RSS 172 MB SerialGC -Xmx 64m:启动成功,启动 1079 ms,RSS 171 MB,发 300 个请求之后 RSS 177 MB SerialGC -Xmx128m:启动成功,启动 976 ms,RSS 179 MB,发 300 个请求之后 RSS 184 MB
-Xmx10m 能启动;RSS 并没有随堆变小。
默认(G1) -Xmx 16m:失败(OutOfMemoryError:Java heap spaceException in thread "main" java.lang.OutOfMem) 默认(G1) -Xmx 20m:启动成功,启动 3197 ms,RSS 227 MB,发 300 个请求之后 RSS 229 MB 默认(G1) -Xmx 24m:启动成功,启动 2970 ms,RSS 234 MB,发 300 个请求之后 RSS 240 MB 默认(G1) -Xmx 32m:启动成功,启动 2231 ms,RSS 256 MB,发 300 个请求之后 RSS 261 MB 默认(G1) -Xmx 64m:启动成功,启动 1938 ms,RSS 262 MB,发 300 个请求之后 RSS 268 MB 默认(G1) -Xmx128m:启动成功,启动 2061 ms,RSS 304 MB,发 300 个请求之后 RSS 309 MB 默认(G1) -Xmx256m:启动成功,启动 2330 ms,RSS 328 MB,发 300 个请求之后 RSS 334 MB SerialGC -Xmx 16m:失败(OutOfMemoryError:Java heap space) SerialGC -Xmx 20m:启动成功,启动 3853 ms,RSS 220 MB,发 300 个请求之后 RSS 220 MB SerialGC -Xmx 24m:启动成功,启动 4223 ms,RSS 236 MB,发 300 个请求之后 RSS 242 MB SerialGC -Xmx 32m:启动成功,启动 2291 ms,RSS 248 MB,发 300 个请求之后 RSS 253 MB SerialGC -Xmx 64m:启动成功,启动 2444 ms,RSS 268 MB,发 300 个请求之后 RSS 276 MB SerialGC -Xmx128m:启动成功,启动 2382 ms,RSS 271 MB,发 300 个请求之后 RSS 277 MB SerialGC -Xmx256m:启动成功,启动 2282 ms,RSS 324 MB,发 300 个请求之后 RSS 330 MB
-Xmx20m 能启动;小堆时启动明显变慢。