0

我正在使用 JAMON 进行应用程序分析。

我的 websphere 管理员报告了应用程序中的内存泄漏。令我惊讶的是,大部分内存泄漏都是在 JAMON API 中报告的。

场景是,我们的生产内存使用量随着时间的推移而不断增加。一个月后就达到了80%。并且不随时间减少。我正在使用 Alphawork Heap 分析器来分析堆转储。

如何确定疑似内存泄漏实际上是内存泄漏。

4

1 回答 1

1

JAMon 由 java Map 支持,因此任何导致其键在数量或大小上无限增长的东西都可能导致内存问题。所以这里有一些事情要看。

  • 你有几台显示器?使用包含不断变化的信息(例如时间戳或函数参数)的键将使 jamon 监视器的数量增加。(MonitorFactory.getNumRows())
  • 您的密钥有多大(即您正在监控的标签)?一旦我看到一些非常大的字符串用作键(选择带有大'in'子句的语句并且消耗了大量内存。

如果上面有问题,这里有一些可以帮助你的方法。

  • 使用 - MonitorFactory.setMaxNumMonitors(int) 限制监视器的数量
  • 限制最大sql语句的大小 - MonitorFactory.setMaxSqlSize(int)
  • 跟踪 jamon 中的总密钥大小 - MonitorFactory.enableTotalKeySizeTracking()
  • 获取 jamon 中的总密钥大小(注意它也会在 jamon Web 应用程序中看到) - MonitorFactory.getTotalKeySize()
  • 在 jamon Web 应用程序中,您可以从 jamonadmins.jsp 中选择“重置”jamon 统计信息以清除 jamon 数据,从而释放所有内存作为快速修复。您也可以通过调用 MonitorFactory.reset() 以编程方式执行此操作
于 2014-08-25T20:52:16.837 回答