我创建了一个简单的服务,它执行4 次 HTTP 调用和 4 次 db 调用来收集一些数据并将其作为JSON
传递给HTTP
响应。
当我启动应用程序(本机,没有 docker(时,我看到它消耗7MB
,有时15MB
有时30MB。好。
当我开始加载测试它时, 每 10 毫秒发送 1 个请求,总共100 个请求。
我注意到内存消耗立即达到200MB。然后经过 5-6 次测试到400MB。(与 Spring Boot 版本一样多(。
问题是:预计会是这样吗?
它是否应该尝试对内存进行极简主义(对于它的本机 v(并在自身之后清理,至少在 n 分钟左右之后?有设置吗?
我不是 GraalVM 本机映像的专家,但从使用"Hello world"应用程序的快速本地测试中,我看到了与您相似的数字。似乎如果您不设置最大堆大小的限制,将自动选择一个(不确定条件(。您可以使用-XX:+PrintGC
启动应用以查看内存活动。然后,您可以尝试-Xmx
(例如-Xmx32m
将最大堆大小设置为 32 MB( -- 您为应用程序提供的内存越多,垃圾回收周期的频率就越低。本文展示了一些更有趣的 GC 选项: https://e.printstacktrace.blog/graalvm-heap-size-of-native-image-how-to-set-it/