【问题标题】:Why Heap usage increase continuously?为什么堆使用量不断增加?
【发布时间】:2023-03-29 09:50:01
【问题描述】:

我创建了只返回字符串(“OK”)的 API。


我使用以下配置对其进行测试。


我用 visualVM 监控它,并注意到堆使用量不断增加。 最终jvm执行gc。



问题。

  1. 为什么堆使用量不断增加?

【问题讨论】:

  • 堆不断增加,因为有分配,直到垃圾收集器运行并回收内存。这是垃圾收集堆的正常模式。即使您的应用程序不自行分配内存,您也正在使用工具查看运行时,运行时必须与(通过 RMI 的 JMX)进行通信,这将创建临时对象。因此,即使应用程序处于非活动状态,仍然存在分配。

标签: spring-mvc jvm heap-memory load-testing


【解决方案1】:

你好,我猜是SpringMVC里面还有其他类创建的。比如threadlocal

【讨论】:

  • 感谢您的回答。为什么 Spring MVC 使用 ThreadLocal?有没有相关的文件?
【解决方案2】:

比猜测更好,您实际上可以使用 jvisualvm 通过内存采样来帮助您找到堆中的对象。您可以在分析部分中看到对象实例的数量和总大小,如下面的屏幕截图所示。您可以在负载测试运行时拍摄快照,然后您可以稍后对其进行分析。 您甚至可以进行堆转储并使用 Eclipse Memory Analyzer 等工具进行分析

【讨论】:

猜你喜欢
  • 2015-12-06
  • 2015-09-15
  • 2015-04-25
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多