【发布时间】:2021-10-13 06:44:30
【问题描述】:
我用 Kotlin 和 Coroutine 编写了一个 Spring Boot 应用程序。它利用弹簧反应堆栈(Webflux)。 看运行时的表现,有点被宠坏了。
该图显示了一段时间内的内存和 CPU 消耗。 一开始,我运行了一个渗透测试,导致 CPU 使用率很高,内存不断增加。令我困惑的是,即使应用程序空闲,内存使用量也不会再减少。
这是正常行为还是应用程序有问题?
【问题讨论】:
-
您检查是否有任何泄漏?
-
这些图表是如何生成的?特别是,内存使用是否来自 JVM(例如通过 VisualVM 或
jmap)?还是来自操作系统? (我猜是后者。) 请记住,操作系统只知道分配给 JVM 进程的内存量。它不知道有多少分配给了堆,也不知道有多少堆实际在使用中。 (传统上,如果堆已满,JVM 会向操作系统请求更多内存,但即使堆为空,也不会将其返回给操作系统。) -
来自操作系统
-
如果你使用 React,你可能会对我在这里写的答案stackoverflow.com/questions/68681786/… 感兴趣,因为还需要考虑本机内存使用情况。
标签: spring spring-boot kotlin spring-webflux kotlin-coroutines