Greetings community
I had an incident with consecutive full GC that provoked the JVM expend more time releasing memory than application execution, in consequence we got a poor performance, sadly when I got a thread dump and a heap dump I condn`t find blocked threads and I just found 3.5 GB of my 6 GB heap size. The biggest object in my heap is an Ehcache class that is making Disk overflow with 1.5 GB size.
I found some posts about Ehcache problem with huge memory heaps and full GC:
My questions are:
¿Is my incident caused for some ehCache issue?
¿Am I using a bad ehCache config such as eternal=true or the max elements on memory?
¿How can I find the origin/solution of my performance problem?
Environment:
OS: Linux (2.6.32-358.el6.x86_64)
Architecture: amd64 64bit
Java Home: /usr/java/jdk1.7.0_51/jre
Java Version: 1.7.0_51
JVM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03, mixed mode)
Java Vendor: Oracle Corporation
Ehcache version: 2.0.4
Config: (I`m only using myCompanyCache)
<defaultCache
maxElementsInMemory="100000"
eternal="true"
overflowToDisk="true"
diskPersistent="false"
memoryStoreEvictionPolicy="LFU">
</defaultCache>
<cache name="myCompanyCache"
maxElementsInMemory="100000"
eternal="true"
overflowToDisk="true"
diskPersistent="false"
memoryStoreEvictionPolicy="LFU">
</cache>
<cache name="SimplePageCachingFilter"
maxElementsInMemory="100000"
eternal="true"
overflowToDisk="true"
diskPersistent="false"
memoryStoreEvictionPolicy="LFU">
</cache>
<cache name="net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory"
maxElementsInMemory="100000"
eternal="true"
overflowToDisk="true"
diskPersistent="false"
memoryStoreEvictionPolicy="LFU">
</cache>
</ehcache>