如何使用 JDK 分析工具?我是不是需要查看分析工具(JConsole 或 VisualVM),直到它出现一些问题?
Posted
技术标签:
【中文标题】如何使用 JDK 分析工具?我是不是需要查看分析工具(JConsole 或 VisualVM),直到它出现一些问题?【英文标题】:How to use JDK profiling tools? Do I need to look at profiling tools (JConsole or VisualVM) until it shows some troubles?如何使用 JDK 分析工具?我是否需要查看分析工具(JConsole 或 VisualVM),直到它出现一些问题? 【发布时间】:2019-12-03 23:02:33 【问题描述】:我是分析的新手(但不是一般的 Java),我对 Java 或 Kotlin 分析最佳实践感兴趣。
我阅读了多篇文章,观看了一些视频。我可以手动完成分析(例如 timestampEnd-timestampStart)或使用标准分析工具(我在这里只写包含在 JDK 中的)
在文章中描述了如何使用这些工具,但从来没有端到端的最佳实践。
所以我的问题是:是的,这些工具会实时显示正在发生的事情。但是程序员是否需要坐下来观察几天才能赶上程序开始混乱的时刻? AFAIK这个过程应该相反:程序运行良好,只要它可以,但出现问题的那一刻应该被自动捕获并记录,然后提醒程序员并由他们分析,不是吗?那么实时分析工具是如何提供它的呢?最佳做法是什么?
(我的问题看起来很笼统,可能在回答完之后我会了解更多关于使用答案进行分析的信息并且更具体)
【问题讨论】:
【参考方案1】:这几乎就是 JFR 旨在帮助解决的问题。以结构化的方式将来自 JVM/JDK/Java 应用程序的各种事件和指标记录在可以作为自描述二进制文件检索的存储库中。因此,您的生产 JVM 可以使用 JFR 的低开销配置运行,其中包含有关应用程序中发生的事情的详细信息,同时您有一些轻量级指标,一些监视器会不断检查它们并在发生某些事情时提醒您。然后,您只需下载 JFR 配置文件并调查发生了什么。
【讨论】:
以上是关于如何使用 JDK 分析工具?我是不是需要查看分析工具(JConsole 或 VisualVM),直到它出现一些问题?的主要内容,如果未能解决你的问题,请参考以下文章