Status/Resolution/Reason: Closed/Fixed/
Reporter/Name(from Bugbase): david ames / david ames (david ames)
Created: 07/01/2015
Components: Caching
Versions: 11.0
Failure Type: Performance Issue
Found In Build/Fixed In Build: CF11_Final /
Priority/Frequency: Major / All users will encounter
Locale/System: ALL / Windows 8.1 Update 2 x(64)
Vote Count: 1
Problem Description:
If you use ehCache config with maxBytesLocalHeap and put a Hibernate object in cache, the operation takes a long time (5+ seconds), and the object is never put in cache. This is because Hibernate objects contain outbound references to internal ColdFusion runtime objects and the SizeOf operator ends up sizing the entire ColdFusion runtime by walking the entire object graph. The estimated size is around 200mb+
Steps to Reproduce:
<cfset CachePut("SomeKey", EntityLoadByPk("SomeObject",1)) />
Actual Result:
Call returns in 5+ seconds and item never ends up in cache.
Expected Result:
Call returns quickly (sub-second) and object is placed in cache.
Any Workarounds:
Create a text file with the following in it.
coldfusion.runtime.NeoPageContext
coldfusion.runtime.CfJspPage
coldfusion.monitor.memory.MemoryTrackable
coldfusion.monitor.sql.QueryStat
coldfusion.monitor.memory.MemoryTrackerProxy
javax.servlet.ServletContext
org.hibernate.engine.spi.SessionImplementor
org.hibernate.internal.SessionImpl
org.hibernate.internal.SessionFactoryImpl
Modify your jvm args to point to that file as follows:
-Dnet.sf.ehcache.sizeof.filter=C:/_development/sizeOfExclusions.config
----------------------------- Additional Watson Details -----------------------------
Watson Bug ID: 4015279
External Customer Info:
External Company:
External Customer Name: david
External Customer Email:
External Test Config: My Hardware and Environment details:
Occurs on all hardware platforms where ehCache is configured with maxBytesLocalHeap
Attachments:
Comments: