Top9的免费Java性能监控工具,你值得拥有
阅读原文时间:2021年04月20日阅读:1

当你的Java代码运行起来的时候,也许它已经可以在生产服务器上运行了。这个时候,你会得到两种消息:好消息和恼人的消息。

恼人的消息是,现在,调试开始了。调试程序,并且监控应用程序性能。这就是说我们需要跳过代码,直接关注到JVM内部运行情况。我们不仅需要在调试阶段(使用分析器)这么做,还需要在生产(使用APM)中持续关注,以便测量性能并检测代码中的问题。

好消息?与你听过的可能不一样,监控性能不一定是高成本的。为了帮助你完成正在进行的优化和调试过程,我们收集了一份在开发和生产环境中监视JVM的最佳工具列表。最好的消息是:这些工具都是免费的。没有试用版,不需要购买许可证 - 你只需要学习如何使用即可。

什么是Java Profilers?

Java Profiler是一种监视JVM级别的Java字节码构造和操作的工具。Profilers跟踪所有方法调用和内存使用情况,允许从你选择的任何角度深入查看代码调用结构。

标准分析器会提供大量信息,其有用性主要取决于手头的调试任务。它应详细说明JVM的所有内存使用情况,包括对象创建,方法执行,迭代执行(包括递归调用),线程执行和垃圾收集。

IDE默认值

由于进程监控对于Java程序的高效开发和调试非常重要,因此所有流行的IDE供应商都提供自己的分析器,无论是内置的还是可以下载的插件。

1. Eclipse MAT

打开百度App,看更多图片

Eclipse Memory Analyzer 是一个Java堆分析仪,可以帮助你找出内存泄漏,减少内存消耗。它可用于分析生产堆转储以计算对象的保留大小,查看谁阻止了垃圾收集器收集对象,并且自动提取泄漏嫌疑生成报告。

2. JetBrains JVM调试器内存视图(JVM Debugger Memory View)

JVM调试器内存视图插件(JVM Debugger Memory View Plugin)与Intellij IDEA和Android Studio兼容,扩展了内置JVM调试器,具有在调试会话期间探索JVM堆中对象的功能。它显示了按类名称分组的堆中的对象总数。

3. Netbeans Profiler

Netbeans IDE有自己的内置分析器,简称并且原始的Profiler。它的功能包括CPU,内存,线程,锁和SQL查询分析,以及基本的JVM监视。

备用Java进程监视工具

作为程序员,你应该知道默认并不总是最佳选择。事实上,也是这样。因此,Netbeans的程序员,你需要找一款profile的替代方案。特别是免费的替代方案。

4. VisualVM

VisualVM称自己为“一体化Java故障排除工具”,是一个集成了命令行JDK工具和轻量级分析功能的可视化工具。它使用各种技术(包括jvmstat,JMX,Serviceability Agent(SA)和Attach API)监视和解决在Java上运行的应用程序。

5. Oracle Java Mission Control

Java Mission Control与Java Flight Recorder一起,允许对象进行分析和事件收集。与Oracle JDK一起打包的这组工具还提供了对收集的数据的详细分析。

Java应用程序性能监视器(APM,Application Performance Monitors)

应用程序性能监视器很少免费。事实上,大多数AMP的应用范围从相当实惠到企业级专用。当你开始考虑监视应用程序性能的重要性时,其实这真是一种耻辱。尤其是在同一服务器上以一致的方式执行复杂的应用程序拓扑的时候。

这不仅是因为这是发现错误和问题的可靠方法,而且因为用户期望并要求得到你构建的应用程序的性能。

6. Glowroot

作为一个开源Java APM,Glowroot以轻量级,易于安装出名。还提供了广泛的功能集以及对各种应用程序服务器的支持。Glowroot是免费且有详细记录的,是开源软件的狂热粉丝的Java程序员(或者缺乏预算的程序员)的性能监控解决方案。

7.Pinpoint

当事情搞大了之后,精确定位问题并不容易,往往更难。这就是为什么如果你想要监控用Java编写的大规模分布式系统的性能, PinPoint可以派上用场。PinPoint是免费和开源的,它提供了一种解决方案,通过跟踪分布式应用程序之间的事务,帮助分析系统的整体结构以及它们之间的组件如何相互连接。

8. JavaMelody

JavaMelody专为Java EE应用程序开发,可让在QA和生产环境中测量和计算应用程序的实际操作。这种免费和开源解决方案易于集成到大多数应用程序中(因为没有数据库和Profiling),因此特别轻量级。

9. Scouter

Scouter自称是“开源新遗物和appdynamics”,试图免费提供同等的价值,并依赖社区开发。其中,scouter可以显示有关用户活动,服务指标和资源分配的信息。

哪个最好?

选一个免费的方案来解决你的问题,这有点像可以随便买孩子跑到糖果店的感觉?这对你的牙并不好。所以,怎么选择呢。你应该选择至少两个,并且根据统计数据显示,你可能还需要更多的工具。

所有这些付费APM服务提供试用期都是有充分理由的 - 你需要进行测试。可以从财力或投入时间作为选择依据。在一天结束时,你需要一个工具来简化你的工作,确保你的应用程序从代码到生产顺利运行。所有这些就是你需要的,除了付钱。

编译