当前位置: 首页 > 知识库问答 >
问题:

如何在JProfiler脱机模式下使用触发器进行评测时自动获取保留内存

苏坚成
2023-03-14

我有一个大型的、内存密集型的、基于Java的web应用程序,它有许多不同的功能,需要我花很长时间来分析。我认为一种更省时的方法是在脱机模式下运行JProfiler,并设置触发器为我捕获数据,而不是使用不同的测试数据手动分析整个应用程序中的每个功能。测试团队将正常使用该软件,随着时间的推移,JProfiler将捕获内存敏感热点,我们可以使用这些热点来提高应用程序的效率。

然而,如果我设置了一个触发器,只获取堆的快照,那么它只会给我浅内存——每个类的内存统计信息,不包括它包含的任何引用对象。但知道String或char[]的实例占用了多少内存对我来说是没有用的。我真正想知道的是我的类的保留内存——每个实例的浅层内存加上它包含的所有类。换句话说,对于我软件中的每个类,我想知道当其所有实例都被垃圾收集时,会释放多少内存。

所以基本上我有几个问题:

1)JProfiler可以只通过触发快照而不记录内存来计算保留内存吗?看起来你必须实际执行“记录内存”操作来计算保留内存,但我可能遗漏了一些东西。

2)如果我必须记录内存来计算保留的内存信息,那么我的下一个想法是在整体内存达到某个阈值时设置一个触发器来记录信息。但这又提出了两个问题:我将如何设置一个触发器来停止录制并拍摄快照?既然我们已经过了触发器中指定的阈值,录制不会错过最重要的内存信息吗?

上面的第二条让我相信,最好的评测方法是触发快照,而不需要记录和计算保留内存——只需要很浅的内存。然而,如果浅层内存显示我的大部分内存使用是在char[](它是这样做的),我如何从中获得有用的信息?这如何帮助我追踪应用程序中内存密集的区域?

非常感谢您的帮助

共有1个答案

云锦
2023-03-14

1)JProfiler可以只通过触发快照而不记录内存来计算保留内存吗?看起来你必须实际执行“记录内存”操作来计算保留内存,但我可能遗漏了一些东西。

实际上,您需要“触发堆转储”操作,然后堆遍历器将可用。启用了“分配数据”的“开始记录”操作记录实时视图的数据(其中只有浅层大小可用),但它还为堆遍历器的“分配”视图提供数据,因此您可以分析对象的分配位置。

由于我们已经过了触发器中指定的阈值,录音不会错过最重要的内存信息吗?

堆转储在触发触发器时捕获整个堆,因此您应该可以看到所有感兴趣的对象。

 类似资料:
  • 我们正在尝试使用jprofiler为运行在JBOSS 6 EAP上的应用程序进行评测。但是,在运行standalone_jprofiler时。bat给出错误, 我们试图增加standalone.conf.bat文件中的内存 下面的语句由janalyiler附加在bat文件中, 我不确定jprofiler7是否支持JBOSS 6 EAP。

  • 我尝试在远程主机上脱机评测Java 8应用程序,不允许直接访问。(hadoop集群上的Flink纱线作业)。 我能够通过JProfiler从JProfiler for linux 64中导出相关的JProfiler库以进行脱机调试- 然后,我在我的主机上创建了一个带有2个计时器触发器的会话。一个在2分钟后激活跟踪,另一个在22分钟后停止所有跟踪并保存快照。当我在JProfiler GUI中通过SS

  • 我在JProfiler中使用离线分析(在远程机器中),并且我试图使用jpexport命令从快照中导出图形。但是,出于某种原因,我无法从我的自定义探针中获取这些图形,即使当我使用JProfiler GUI打开快照时,我也可以访问这些图形。 请注意,我正在通过分析应用编程接口收集数据,例如,使用实现“遥测探针”的Java类。在留档中,还可以使用自定义探针向导,我想知道在将会话文件导出到分析机器后,是否

  • 我是Apache Flink的新手,我正在尝试使用Flink CEP动态评估流中的模式。我正在尝试查找执行以下操作的用户登录、addtocart和注销,并且能够检测到模式,但是如果我定义了多个模式,例如登录,注销,则无法检测到模式 下面是我的代码 动作类 模式类 主类 如果我给出一个模式来评估它的输出,如下所示 如果我试图给多个模式进行评估,如下面所示,它不是评估第二个模式,而是建议我如何评估多个

  • 我正在构建我的应用程序,没有问题: 但是当我从. m2/settings.xml的默认配置文件中删除存储库时 然后我得到了一个错误: 存储库系统处于脱机状态,但工件处于com状态。国际商用机器公司informix:ifxjdbc:jar:4.1在本地存储库中不可用。 为什么它现在抱怨离线存储库?即使当我编辑url的一些废话,它仍然在工作。那么,当url是irelevant时,这些存储库在脱机mav

  • 我正在运行一个部署在远程机器服务器上的Web应用程序,我有这个应用程序的IP地址和URL。当我用浏览器点击URL时,应用程序会显示。 我现在必须分析这个web应用程序,因为我需要找出为什么它运行得这么慢。 我试过使用JProfiler,但没有成功。有人可以建议如何配置JProfiler进行远程分析吗?