[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2169) L2 Cache and Long transactions Memory Leak : OutOfMemoryException
Sami Dalouche (JIRA)
noreply at atlassian.com
Sun Oct 22 10:56:04 EDT 2006
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2169?page=comments#action_24936 ]
Sami Dalouche commented on HHH-2169:
------------------------------------
One last remark I forgot :
- If L2 Cache is disabled and Query Cache is disabled, there is no problem.
> L2 Cache and Long transactions Memory Leak : OutOfMemoryException
> -----------------------------------------------------------------
>
> Key: HHH-2169
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2169
> Project: Hibernate3
> Type: Bug
> Components: core
> Versions: 3.2.0.ga
> Environment: [b]Hibernate version:[/b]
> Hibernate Entity Manager 3.2.0, with Hibernate Core 3.2.0 and Hibernate Annotations 3.2.0
> [b]Mapping documents:[/b]
> Annotations
> [b]Full stack trace of any exception that occurs:[/b]
> Memory Heap Exception
> [b]Name and version of the database you are using:[/b]
> PosgreSQL 8.1
> Reporter: Sami Dalouche
>
>
> Summary
> ---------
> When enabling L2 Cache (with either OScache and EhCache, both with a limitation on the max #of instances, so the problem shouldn't come from the cache manager), Hibernate cannot have long running transactions, otherwise, it results in a Memory Heap Exception...
> The problem does NOT happen if the L2 Cache is disabled !
> Details
> ----------
> - Configure the code to run in ONE transaction
> - Have a huge loop that inserts 2 million entries that are cacheable (@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE))
> - flush() and clear() every 1000 entries, to periodically flush the cache
> => None of the entries are garbage collected.
> => Using a profiler, it is possible to trace the owning objects of my domain classes to :
> - org.hibernate.action.EntityInsertAction ("instance" variable)
> - array / List (variable elementData)
> - variable "executions" in object .. class org.hibernate.engine.ActionQueue
> Remarks :
> - If the Query Cache is disabled, and the objects being inserted are NOT cacheable (no @Cache annotation), there is no problem
> - If the Query Cache is enabled, then, no matter whether the objects being inserted are cacheable or not, The entries are never garbage collected, and I get an OutOfMemoryException. (I see NO relationship between the Query Cache and my objects. I never query the objects, only save them !!)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list