我正在寻找一个Java代码剖析器,可以用于在生产环境下对我的应用程序进行剖析(它是在后端运行的服务)。主要我想要调用树型剖析,即如果a()调用b(),然后b()调用c(),那么a()、b()和c()都花费了多少时间,包括和不包括。
我看过jvisualvm和jprofiler,但这不是我想要的,因为我不能把它们绑定到我的生产应用程序上,否则会造成严重的性能问题。
此外,我也查看过metrics(https://github.com/dropwizard/metrics),但它没有给我提供剖析调用树的功能。
我需要类似Callgrind (http://valgrind.org/docs/manual/cl-manual.html) 的库,因为它提供调用树剖析功能和高级选项如避免调用循环(递归)。但我不确定Callgrind是否可以在生产环境中使用,因为它会在程序终止时转储数据。
有人能推荐一个好的调用树剖析器,可以在生产环境下使用而不会影响性能吗?