为什么Orbeon会创建如此大的org.orbeon.oxf.cache.MemoryCacheImpl对象?

时间:2014-05-08 14:32:21

标签: java caching out-of-memory orbeon

我在旧版本的Orbeon Forms上运行,准确地说是3.9.0.rc1.201103220245 CE。最近我经常看到运行它的JVM抛出OutOfMemoryError:Java Heap Space错误。我分析了一个堆转储,发现org.orbeon.oxf.cache.MemoryCacheImpl的一个实例具有迄今为止最大的保留大小。我已经研究过,但没有发现任何与之相关的错误报告。我找到的一件事是Orbeon邮件列表上可能相关的帖子:http://discuss.orbeon.com/Unusually-large-number-of-blocking-threads-td2338846.html。有人知道这个问题是否在Orbeon的后续版本中得到修复?

谢谢,

-Michiel

1 个答案:

答案 0 :(得分:0)

没有花费大量时间分析堆转储,很难说任何结论。 Orbeon Forms维护了许多缓存,MemoryCacheImpl是其中之一,为了高效运行,它需要相当大的内存。

在某些情况下,这可能是“太多”的记忆。如果它是一个问题,它可能是由于一个错误(内存泄漏),运行在Orbeon Forms之上的表单或应用程序的问题,或者可以在Orbeon Forms中更有效地完成的。此时,“泄漏”类别中没有公开的已知问题,但可以更有效地完成许多事情。自3.9以来,已经有很多事情已经改进,但仍有工作要做,这是Orbeon Forms roadmap上的其中一项。

所以,我建议你尝试升级到最新的稳定版本(撰写本文时为4.5),看到你仍然看到同样的问题。如果您是,请查看您的应用程序/表单中是否有任何可能导致此问题的内容,请查看是否可以增加堆大小或减小缓存大小。