Java 的 Profiler [几乎] 不会减慢分析代码的速度
Posted
技术标签:
【中文标题】Java 的 Profiler [几乎] 不会减慢分析代码的速度【英文标题】:Profiler for Java which [almost] does not slow the profiled code 【发布时间】:2012-12-05 15:21:33 【问题描述】:有必要查看大型遗留代码中的瓶颈在哪里,并且负载测试工具不太可能揭示真实的瓶颈,因此我们最终可能会在生产环境中这样做。是否有一个用于 java 代码的分析器,它可以将代码减慢 10%,而不是“几次”?此外,必须能够轻松插入分析器并轻松拔下它以恢复原始性能。 是否有接近这些要求的分析器?
【问题讨论】:
你为什么需要它?您的代码是绑定到一些实时事件还是什么? 【参考方案1】:我使用JProfiler 来检测我前段时间开发的网络应用程序中的问题。性能损失实际上取决于您要监视的资源(正如他的回答中已经提到的那样)。根据我的整体经验,将 JProfiler 插入/拔出应用程序很容易,此外还有预定义的资源监控选项,其中描述了它对将要被分析的应用程序性能的影响。
很遗憾,我无法说明它与其他现有工具相比有多好,而只是指出我使用此工具的经验。
【讨论】:
【参考方案2】:Profiler ...可能不会。不过你可以试试BTrace。
根据我的经验,BTrace 开销远没有任何分析器那么明显(当然,取决于活动 - 例如,如果您想跟踪所有方法的执行,无论如何这都会很昂贵)。
除此之外,BTracing 不需要任何特殊的 JVM 启动参数。是的,您可以随时插入/拔出它。
【讨论】:
【参考方案3】:我所知道的 Java 最好的 performance monitor 是 Jamon。除了这些统计数据的查询引擎之外,您还将获得一个 Web 前端和非常好的统计数据。实际上是一个很棒的项目。
“监视器是一种用于观察系统活动的工具。通常,监视器会观察系统的性能,收集性能统计信息,分析数据并显示结果。有些还可以识别问题区域并提出补救措施。” The Art of Computer Systems Performance Analysis
【讨论】:
以上是关于Java 的 Profiler [几乎] 不会减慢分析代码的速度的主要内容,如果未能解决你的问题,请参考以下文章
没有 v8-profiler 的 Node.js 内存泄漏搜索