chr*_*din 7 spring hibernate hazelcast spring-data-jpa
我的Spring Data JPA/Hibernate应用程序在启动时消耗超过2GB的内存,而没有一个用户点击它.我使用Hazelcast作为二级缓存,但是当我使用ehCache时我遇到了同样的问题,这可能不是导致问题的原因.
我在Visual VM中运行了一个带有堆转储的配置文件,我看到JpaMetamodelMappingContext正在消耗大量内存,并且是大量的Map对象.我只需要帮助破译我所看到的内容,如果这实际上是一个问题.我在模型中有一百个课程,所以这可能是正常的,但我没有参考点.这看起来有点过分了.
一旦我获得100个并发用户的负载,我的内存消耗增加到6-7 GB.对于我推送和缓存的数据量来说这是很正常的,但我觉得如果我可以减少初始内存,我会有更多的增长空间.
我不认为你这里有问题.相反,我认为你误解了你正在看的数据.
请注意,堆空间图显示两个数字:堆大小和已用堆
堆大小(橙色)是JVM可用于堆的内存量.这意味着它是JVM在某些时候从操作系统请求的数量.
使用的堆是实际使用的堆大小的一部分.忽略启动阶段,它会线性增长,然后随着时间的推移重复下降.这是空闲应用程序的典型行为.应用程序的某些部分会产生适量的垃圾(曲线的上升部分),这些垃圾会不时被收集.
该曲线的低点是您实际使用的内存量.它似乎大约250MB对我来说听起来不是很多,尤其是当你说实际工作时总耗电量为6-7GB对你来说听起来很合理时.
其他一些观察:
CPU负载和堆都会在启动时快速增长/波动很大.这是可以预料的,因为存储库和实体的分析发生在那时.
JpaMetamodelMappingContext保留的大小约为23MB.再次,一大堆记忆,但不是那么大.这包括它引用的内容,它几乎完全来自JPA实现的元数据,因为您可以在查看其源代码时轻松查看.
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |