如何分析 Java/Seam Web 应用程序中的会话内存使用情况?

Posted

技术标签:

【中文标题】如何分析 Java/Seam Web 应用程序中的会话内存使用情况?【英文标题】:How to profile session memory usage in Java/Seam web application? 【发布时间】:2009-08-01 21:25:15 【问题描述】:

是否有任何方法/工具来分析 Java Web 应用程序中每个会话的内存使用情况?

更具体地说,我正在使用 Seam,并且我有一些特定于用户或用户当前会话的对象,因此它们被设置为存储在用户的会话中。

前段时间,我的应用程序在访问一定数量的用户时会耗尽内存,因此我将各种内容移出会话并进行分析,直到内存耗尽。然而,内存测量是在 JVM 级别。我真的很想要一种方法来监控会话级别的内存使用情况,不包括任何非会话内存使用情况。

很高兴拥有:

http 会话的总内存使用量(我可以将其与整个应用程序的内存使用量进行比较) 每个会话的内存使用情况,甚至是平均值。

【问题讨论】:

【参考方案1】:

看看http://messadmin.sourceforge.net/。

【讨论】:

【参考方案2】:

我经常使用Eclipse Mat 来诊断类似问题。如果您有大型会话,会话管理器会显示在“Dominator Tree”报告中。您可以轻松区分会话和应用其他部分的总内存使用情况。

您可以深入到各个会话并查看每个会话使用了多少内存。您还可以打开每个单独的会话并检查会话中的每个对象。

查看 MAT 提供的其他报告也是一个好主意。有时结果令人惊讶 - 例如,我们遇到了内存使用问题,结果证明是 JRE 类加载器问题。

【讨论】:

以上是关于如何分析 Java/Seam Web 应用程序中的会话内存使用情况?的主要内容,如果未能解决你的问题,请参考以下文章

如何在事件订阅者中访问Symfony 3.3中的登录用户,而不会丢失Web分析器

如何分析 Perl Web 应用程序?

如何分析Thread Dump

如何分析Thread Dump

Java Web 深入分析 Servlet工作原理解析

如何监控/分析在 Glassfish 上运行的 Web 项目