由于以下配置的EhCache,我的性能环境中存在内存泄漏问题:
<cache name="mycache"
maxElementsInMemory="50000"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="0"
overflowToDisk="false"
diskPersistent="false"
memoryStoreEvictionPolicy="LRU"
/>
我接受了堆转储并尝试使用IBM Heap Analyzer分析泄漏原因。 IBM Heap分析器怀疑内存泄漏,信息如下:
Leak suspect: 576,690,536 bytes (83.16 %) of Java heap is used by 128 instances of net/sf/ehcache/store/chm/SelectableConcurrentHashMap$Segment
Contains an instance) of the leak suspect: - org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean holding 117,109,616 bytes at 0x1b6fb410
Total size: 576,690,536 bytes
Size: 528 bytes
我的对象(存储在ehcache中)大小为88字节。
有了这些信息,我无法理解在这种情况下可能导致内存泄漏的原因。
我的对象是否未从缓存中刷新/删除? 我的ehcache配置中有什么奇怪的东西吗? 如果没有从缓存中删除对象,可能是什么原因?
任何想法?
答案 0 :(得分:0)
设置timeToLiveSeconds = <no of seconds>
。应该大于0。