我正在寻找一个Java代码分析器,我可以用它来分析我的应用程序(它是一个在后端运行的服务)在生产(所以意味着低开销,并且它不能减慢我的应用程序)。主要是我想调用树分析,也就是说,如果a()调用b(),然后b()调用c(),那么a()、b()和c()花费了多少时间,包括包容性和独占性。
看到jvisualvm
and jprofiler
,但这不是我想要的,因为我无法将我的生产应用程序与它们绑定,因为这会导致主要的性能问题。
另外,我确实经历过metrics
(https://github.com/dropwizard/metrics https://github.com/dropwizard/metrics),但它没有给我提供分析调用树的功能。
Callgrind
(http://valgrind.org/docs/manual/cl-manual.html http://valgrind.org/docs/manual/cl-manual.html)类型库是我所需要的,因为它提供了调用树分析功能和高级选项,例如避免调用循环(递归)。但我不确定 Callgrind 是否可以在生产中使用,因为它会在程序终止时转储数据。
任何人都可以建议一个好的java调用树分析器,可以在生产中使用而不影响性能吗?
看一眼Java任务控制 https://docs.oracle.com/javacomponents/jmc-5-5/jmc-user-guide/toc.htm和这个结合飞行记录仪 https://docs.oracle.com/javacomponents/jmc-5-5/jfr-runtime-guide/toc.htm。从 Oracle JDK 7 Update 40 (7u40) 发布开始,Java Mission Control 与 HotSpot JVM 捆绑在一起,因此它高度集成,并且据称对运行时性能影响很小。我才刚刚开始研究它,我确实看到了一些调用树功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)