在生产中调试性能问题可能是一件痛苦的事情,在某些情况下,如果没有正确的工具,调试性能问题是不可能的。Java分析一直存在,但大多数开发人员所考虑的Java分析器只有一种类型:标准JVM分析器。想了解有关java更多详细信息,建议参加Java培训,通过系统全面的学习,可以快速提升自己。
然而,仅使用一种类型的分析器是不够的。在这篇文章中,我们将讨论三种类型的Java分析器,以及为什么在开发应用程序时需要所有这些分析器。
1.标准JVM分析器
VisualVM、JProfiler、YourKit和Java任务控制等产品。
JVM分析器将跟踪所有方法调用和内存使用情况。这允许开发人员以他们选择的任何角度深入调用结构。
优点:
标准配置文件非常适合跟踪内存泄漏,它详细列出了JVM的所有内存使用情况以及哪些类/对象负责。手动运行垃圾收集,然后检查内存消耗的能力可以很容易地将注意力集中在错误内存的类和进程上。在java培训中,有系统全面的理论知识和企业级实战项目,可以让你真正掌握java知识和技能,更好地进行项目开发。
Java分析器非常适合跟踪CPU使用情况,它通常提供一个CPU采样功能,按类和方法跟踪和聚集CPU时间,以帮助锁定热点。
缺点:
需要直接连接到受监视的JVM;在大多数情况下,这最终限制了开发环境的使用。(注意:某些分析器可以以有限的方式在线程外和内存转储中工作。)
它们会减慢你的应用程序;对于所提供的高水平的细节,需要大量的处理能力。
2.轻量级Java事务分析器
XRebel和Stackify Prefix等产品。
轻量级分析程序采用不同的方法跟踪你的应用程序,将它们直接注入到代码中。如果你正在考虑如何快速学习java,那么参加java培训掌握更全面的知识和技能将是一个很好的开始。
l Aspect分析器使用面向方面编程(AOP)将代码注入指定方法的开始和结束。注入的代码可以启动计时器,然后在方法完成时报告经过的时间。这些配置文件很容易设置,但你需要知道要配置什么。
l Java代理分析器使用Java Instrumentation API将代码注入到应用程序中。由于代码是在字节码级别重写的,因此该方法对你的应用程序具有更大的访问权限。这允许对应用程序中运行的任何代码进行检测,无论是你编写的代码还是应用程序所依赖的第三方库。
Aspect 分析器非常容易设置,但它们所能监控的内容有限,而且需要详细列出你想要跟踪的所有内容。Java代理在跟踪深度方面有很大的优势,但编写起来要复杂得多。如果你也打算从事java行业,可以参加java培训来提升自己,有老师带你快速入门,很快就能掌握java知识和技能。
Stackify Prefix是一个面向开发人员的Java分析器,在后台使用Java代理分析器方法。很酷的是,Prefix已经知道了开发人员最想要的类和第三方库,所以你不必详细说明它们。此外,它从仪器中获取所有统计数据,并以简单易懂的方式显示它们。
3.低开销,生产中的Java JVM分析(APM)
到目前为止,所有的评测器都非常适合开发,但跟踪系统在生产中的表现至关重要。生产总是一个不同的环境,开发和登台设置通常没有相同的数据集和负载。
Java APM工具通常使用Java代理分析器方法,但具有不同的检测规则,以允许它们在不影响产品性能的情况下运行。这些分析器的诀窍是以智能的方式提供正确的信息,而不占用CPU周期。想学习java技术,建议考虑报名参加Java培训,有明确的学习路线和全面系统的课程,能获得较快提升。
Stackify的Retrace是一种APM工具,它使用与Stackify Prefix相同的技术,只需进行一些调整即可在登台和生产环境中顺利运行。这是通过聚合定时统计信息和采样轨迹来实现的。这为你提供了在生产环境中运行的应用程序代码的方法级可见性。
因此,当你有一个缓慢的web请求时,这将转化为Retrace中显示的跟踪。从那里你可以深入了解什么方法是罪魁祸首。
总结
既然你已经了解了三种类型的Java代码分析器,现在是时候决定是否真的需要它们了。答案取决于应用程序的性质。
如果它很小,像本地企业或商店的费用管理系统,那么分析非常简单,一个标准的分析器将完成这项工作;如果你正在开发一个web应用程序,如快递设施的跟踪系统,那么你的应用程序可能会被成千上万的用户访问。在这种情况下,你还需要用于生产环境的APM工具;最后,如果你的应用程序是针对嵌入式系统的,那么你将需要这三种应用程序。做好选择,开发一个能够提供最佳性能的应用程序会很有趣。想要学习java更多知识和技能,可以考虑参加java培训,有经验丰富的专业讲师指导教学,有紧跟市场需求的实时课程,可以让你快速掌握这门技术,节约时间,少走弯路。