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

如何从JVM中检测长gc?

荀金鹏
2023-03-14

我如何检测超过某些配置的应用程序超时的GC(编辑或任何停滞),以便我可以记录警告(或动态延长超时)?

编辑:我不是在要求类似监控的替代方案或变通办法。我正在写一个库,我不能控制环境或设置。虽然我将清楚地说明库的用户必须设置适当的超时时间,但我仍然希望人们能够忽略这一点,在几年后更改jvm堆设置,并忘记增加超时时间。如果我可以在库日志中警告可能的暂停超过配置的超时,支持将会更简单。它不一定是完美的,“足够好”的检测将减少浪费在库用户没有设置合理超时的时间上的时间。

编辑并明确表示,即使有一个大的GC,库也能正常工作,但有一个很好的理由选择超时,这是为了检测崩溃,以便库尝试连接到备用对等点。

共有1个答案

阮才俊
2023-03-14

您可以使用管理bean通知并订阅GARBAGE_COLLECTION_NOTIFICATION事件,这些事件反过来提供具有所需统计信息的gcinfo对象

javax.management包javadocs对如何使用这些服务有一个高级概述。

 类似资料:
  • 我在使用JProfiler时面临一个问题:问题是它无法检测正在运行的WebSphere的JVM。 我看到WebSphere作为本地系统帐户作为Windows服务运行。因此,我尝试了“show Services”选项,但它仍然无法检测到JVM。 解决这个问题真的花了我很多时间,有人能帮我吗?

  • 我想从命令行检查本地安装的jvm的java模块的资源文件的内容。 基于一个关于jvm中mime类型支持的问题,我想了解一下内容类型。模块java中的属性。我在本地安装的jvm的基础。 然而,当滚动为jvm安装的文件时,我找不到一个名为like。但是7-zip无法将此文件作为存档打开。 如何查看内容类型。模块java中的属性。使用命令行在本地安装的jvm的基础上?

  • 问题内容: 如果没有可能的结果,如何检测从MySQL发送的空结果集。 问题答案: 只需检查是否返回true。例如 您可以如下使用 另外,您也可以让它返回一个完全错误的消息,或者如果没有,则返回完全错误消息。例如 与

  • 我有一个组件,它可以接受React

  • 我正在Ubuntu 18.04服务器上用OpenJDK 11运行Tomcat 9(作为用户)。我希望能够将JProfiler 11连接到Tomcat进程。 在过去,我只是使用这个选项通过ssh连接到远程JVM,而JProfiler可以定位进程。在这台机器上,JProfiler从未找到Tomcat进程。 我尝试使用su和sudo选项切换到tomcat用户。我甚至启用了直接作为tomcat登录。无论如

  • 对于iOS和Android的UI应该略有不同,即在不同的平台上,必须有一种方法来检测应用程序在哪个平台上运行,但我在文档中找不到。是什么?