这样就可以运行Java代码了。 也许它甚至可以在生产服务器上运行。 在您完成出色工作之后,我们得到了好消息和令人讨厌的消息。
令人讨厌的消息是,现在开始调试。 就是调试和应用程序性能监视。 这意味着您不仅需要查看编写的代码,还可以查看JVM的内部工作原理。 您不仅需要在调试阶段(使用探查器)执行此操作,而且还需要在生产环境中(使用APM)执行此操作以测量性能并检测代码中的问题。
好消息? 与您可能听到的相反,这不一定是痛苦的或昂贵的。 为了帮助您进行不断的优化过程和调试工作,我们收集了一系列最佳工具,以在开发和生产环境中监视JVM。 最好的部分是? 它们都是以非常实惠的价格来的:免费。 无需试用,无需购买许可证 -只是您需要深入了解代码执行幕后工作的工具。
什么是Java Profilers?
Java Profiler是在JVM级别监视Java字节码构造和操作的工具 。 探查器跟踪所有方法调用和内存使用情况,使您可以从任意角度深入研究调用结构。
您的标准探查器将为您提供很多信息,其有用性主要取决于手头的调试任务。 它应该详细列出JVM的所有内存使用情况,包括对象创建,方法执行,迭代执行(包括递归调用),线程执行和垃圾回收 。
IDE默认值
由于过程监视对于有效开发和调试Java程序非常重要,因此所有流行的IDE供应商都提供内置的或作为插件的自有品牌分析器,您可以下载它们。
1.
Eclipse内存分析器是一个Java堆分析器,可以帮助您查明内存泄漏并减少内存消耗。 它可用于分析生产性堆转储以计算对象的保留大小 ,查看谁阻止垃圾收集器收集对象,并运行报告以自动提取泄漏可疑对象。
2.
与Intellij IDEA和Android Studio兼容的JVM调试器Memory View插件扩展了内置JVM调试器,使其具有在调试会话期间探查JVM堆中对象的功能 。 它显示了堆中按类名分组的对象总数。
3.
Netbeans IDE有自己的内置探查器,简称为探查器。 它的功能包括CPU,内存,线程,锁和SQL查询配置文件,以及基本的JVM监视 。
替代Java流程监视工具
作为程序员,您知道默认值并不总是最佳选择。 实际上,通常不是。 因此,有必要检查IDE探查器的替代方法,以查看哪种工具最适合您的需求,尤其是如果它是免费的。
4.
VisualVM自称为“多合一Java故障排除工具”,是一种集成了命令行JDK工具和轻量级分析功能的可视化工具。 它使用各种技术(包括jvmstat,JMX,Serviceability Agent(SA)和Attach API)监视Java上运行的应用程序并进行故障排除。
5.
Java Mission Control与Java Flight Recorder一起, 可以对有关Java虚拟机(JVM)和Java应用程序行为的底层信息进行概要分析和事件收集 。 与Oracle JDK打包在一起的这套工具还提供了对所收集数据的详细分析。
Java应用程序性能监视器(APM)
应用程序性能监视器很少是免费的。 实际上,使用的大多数AMP从相当实惠到企业专有的范围不等。 当您考虑监视应用程序性能的重要性时,尤其是对于在同一台服务器上以凝聚力执行(希望)的复杂应用程序拓扑时,这确实是一种耻辱。
不仅因为这是发现错误和问题的可靠方法,而且还因为用户期望并要求您构建的应用程序具有性能。 而且你也应该。
6.
Glowroot是开源Java APM,以其轻巧,易于安装而自豪,并提供了广泛的功能集以及对各种应用程序服务器的支持。 Glowroot是免费的且有据可查,并且为Java程序员提供了性能监视解决方案,他们也是开源软件的狂热爱好者 (或者根本没有预算)。
7.
事半功倍,准确定位问题并没有那么容易,但是通常会更加困难。 这就是为什么如果您希望监视用Java编写的大型分布式系统的性能, PinPoint可以派上用场的原因。 PinPoint是免费和开源的,它提供了一个解决方案,可通过跟踪分布式应用程序之间的事务来帮助分析系统的整体结构以及其中的组件如何互连。
8.
JavaMelody是专为Java EE应用程序开发的,可让您评估和计算应用程序在质量保证和生产环境中的实际操作。 这种全面的免费和开放源代码解决方案易于集成到大多数应用程序中,并且(由于缺少数据库和配置文件)特别轻巧。
9.
Scouter称自己为“开源的新文物和应用程序动力学”,试图通过社区发展努力免费提供相同的价值。 scouter可以向您显示有关用户活动,服务指标和资源分配的信息 。
哪个最好?
选择免费的解决方案来解决您的问题,可能就像小时候在糖果店里放了无限信用。 对您的牙齿健康不利。 那么如何选一个呢? 好吧,不要。 您应该至少选择两个,并且根据统计数字,甚至可能更多 。
所有这些付费APM服务都提供试用期是有充分理由的,您必须先进行测试,然后再提交。 在财务上或仅仅通过花时间挑选集成工具即可。 归根结底,您值得使用一个工具来简化您的工作,以确保您的应用程序从代码到生产的顺利运行。 所有这些,而不必与付费服务绑定。
翻译自: https://www.javacodegeeks.com/2019/05/free-java-process-monitoring-tools-choose.html