有时我必须对 Java 代码进行一些分析工作,我想知道为什么我应该让我的老板在商业分析器中进行调查,而不是只使用 Netbeans 或 JConsole 中的分析器?
哪些杀手级功能会保证投资?
根据我使用 JProfiler 的经验,它只是比 NetBeans 分析器更全面的体验。它更容易上手,更容易解释信息,虽然我没有测量过,但 JProfiler 似乎对正在分析的应用程序性能的负面影响较小。
此外,JProfiler 与 IntelliJ IDEA 很好地集成。我必须使用 NetBeans 才能使用 NetBeans 分析器,这很不方便,因为我必须手动配置一个自由格式的项目以匹配我的项目布局。
NetBeans 分析器可用。与 IntelliJ 不同,我不会为我的个人项目购买 JProfiler 许可证,因为与 IDE 不同,它不是您每天都在使用的工具。但是,对于有偿工作,没有理由不购买更好的工具。与开发人员的时间成本相比,它并不昂贵。
我有使用 NetBeans 分析器和 JProbe 的经验。对于性能分析,我发现 Netbeans 非常有用,但 JProbe 的优势在于内存分析。
JProbe 具有用于比较堆快照和查找内存泄漏根本原因的出色工具。例如,在 JProbe 中,您可以以图形的形式直观地查看堆快照,选择要调查的节点,然后删除引用以查看实例是否可以被垃圾收集。
如果您已经在使用 Netbeans,那么启动分析器很容易(除非您使用的是基于 Maven 的项目......叹息)。
我使用了付费分析器以及 Netbeans 之一。Netbeans 做得很好(刚推出时有点粗糙……但现在好多了)。
我分析的代码不是很大,所以我不能说分析所花费的时间是否是一个主要因素。
答案非常主观,完全取决于您的需求。要看的东西:
1) 在您的环境中易于使用(对于 NetBeans,内置分析器可能是最简单的。
2) 启动 prfiler 到实际获得可用结果所花费的时间
3)它是采样还是跟踪分析器?(这里有一个概述:http: //docs.hp.com/en/5992-0757/ch05s01.html
4)您可以实时查看结果还是必须等待分析完成?
这是关于 Java 分析器的 slashdot 讨论的链接:http ://ask.slashdot.org/article.pl?sid=06/06/30/0053237
我没有使用过 Netbeans 分析器,但尝试过 JProfiler、Yourkit 和 JProbe。我发现 Yourkit 稍微好一点(主要是在可用性方面购买)。其中一些有用的功能是:(您可以检查它是否在 Netbeans 中可用)
您可以在他们的网站上查看更多详细信息。
我会说,准备使用和更多的性能统计。去年我在一家跨国公司实习时被分配了一份分析工作。我使用了 InfraRED 分析器,它使用 Java 面向方面的 API(与 Aspectwerkz 和 AspectJ 一起使用)。但是我不得不扩展分析器以获得我的经理想要的东西。此外,分析器给出的性能统计数据是有限的。
但在选择分析器之前,我研究了其他一些开源分析器。其中一些是微不足道的,不适合我们想要的。
我还要补充一点,其中一些不起作用。例如,如果我们想收集 Web 应用程序的性能统计信息,所有的分析器都不支持我们需要的那些统计信息。
使用完全独立的分析器,可以更轻松地将其与工具链中的其他应用程序集成。例如,假设您想在构建过程中运行分析器(例如,每晚一次)。像 JProfiler 这样的东西很容易与 ANT 集成,而内置在 IDE 中的分析器可能会也可能不会。如果您有一台单独的构建机器,安装分析器的本地副本是有意义的,但安装整个 IDE 只是为了访问一个组件则没有意义。
根据我的经验,YourKit profiler 是最有用的。小的可用性事情确实有所作为,但它也是最全面的一个,包含:
除此之外,它也在不断改进,所以谁知道未来会发生什么:)
比较这些功能,看看您是否真的需要商业软件提供的功能而不是免费软件提供的功能。如果是,那么它值得投资。