【问题标题】:Memory leak without OutOfMemory exception?没有 OutOfMemory 异常的内存泄漏?
【发布时间】:2011-08-08 10:16:01
【问题描述】:

我的程序有问题(JSF 在 Glassfish 上运行)。它正在处理大量数据(并使用休眠将其插入数据库)。问题是,大约工作 2 小时后,它会变慢。我没有得到任何异常(尤其是没有 OutOfMemory)。有没有可能是内存泄漏?我用 Eclipse 内存分析器检查了堆转储,并且存在一些 HashMap 问题。我已经在可能的地方修复了它,现在该工具没有显示这个问题。但我的应用程序仍然无法正常工作。

【问题讨论】:

标签: java memory-leaks


【解决方案1】:

听起来您的问题根本不是传统的内存泄漏。

如果我猜的话,我会说你的数据结构设计不佳,缓存无效,或者可能是并发瓶颈。

您可能应该专注于性能分析,以了解时间流向并寻找锁定争用的迹象。

【讨论】:

    【解决方案2】:

    您有可能发生某种内存泄漏并且产生大量临时对象,因此在一段时间后垃圾收集器会破坏您的性能。如果是这种情况,您可以使用-Xmx 选项:堆大小越小,您的应用程序应该越早减速,而更大的堆应该会产生相反的效果。

    这种影响也可能是由不断增长的内部数据结构引起的。数据结构上的操作总是具有时间复杂度(“Big-O-Notation”),如果复杂度是多项式甚至更糟,这样的操作也会影响性能。查看您的应用程序中随时间增长的那些集合,并仔细检查您是否选择了最佳集合类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多