首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Data JPA Meta JpaMetamodelMappingContext内存消耗

Spring Data JPA Meta JpaMetamodelMappingContext内存消耗
EN

Stack Overflow用户
提问于 2018-09-18 19:49:50
回答 1查看 377关注 0票数 7

我的Spring Data JPA/Hibernate应用程序在启动时消耗了超过2 2GB的内存,没有一个用户访问它。我使用Hazelcast作为二级缓存,但当我使用ehCache时,我也遇到了同样的问题,所以这可能不是问题的原因。

我在Visual VM中运行了一个带有堆转储的配置文件,我看到JpaMetamodelMappingContext和辅助内存消耗了大量的Map对象。我只是需要帮助来破译我所看到的,如果这真的是一个问题。我在模型中确实有100个类,所以这可能是正常的,但我没有参考点。这看起来有点过分了。

一旦我获得100个并发用户的负载,我的内存消耗就会增加到6-7 GB。对于我推送和缓存的数据量来说,这是很正常的,但我觉得如果我能减少初始内存,我就会有更大的增长空间。

EN

回答 1

Stack Overflow用户

发布于 2018-09-30 20:34:42

我不认为你有什么问题。相反,我认为您曲解了您正在查看的数据。

请注意,堆空间图显示两个数字:堆大小和已用堆

堆大小(橙色)是JVM可用于堆的内存量。这意味着它是JVM在某个时刻从OS请求的量。

已用堆是实际使用的堆大小的一部分。忽略启动阶段,它会线性增长,然后随着时间的推移反复下降。这是空闲应用程序的典型行为。应用程序的某些部分会生成适中数量的垃圾(曲线的上升部分),这些垃圾会不时地被收集。

该曲线的低点是实际使用的内存量。它似乎大约是250MB,这对我来说听起来并不是很多,特别是当你说实际工作时6-7 7GB的总消耗对你来说是合理的。

其他一些观察结果:

CPU负载和堆在启动时都增长很快/波动很大。这是意料之中的,因为存储库和实体的分析是在那个时候发生的。

JpaMetamodelMappingContext的保留大小约为23MB。再说一次,这是一个很好的内存块,但不是那么大。这包括它引用的内容,这些内容几乎完全是来自JPA实现的元数据,当您使用take a look at its source时,您可以很容易地看到这一点。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52385956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档