商业Java分析器相对于免费分析器有什么优势,例如Netbeans中的那个?
偶尔我必须对Java代码进行一些分析工作,我想知道为什么我应该让我的老板在商业分析器中进行调查,而不是仅仅使用Netbeans或JConsole中的那个?
什么样的杀手特征会保证投资?
我有使用NetBeans探查器和JProbe的经验。 对于性能分析,我发现Netbeans非常有用,但JProbe优于内存分析。
JProbe具有用于比较堆快照和查找内存泄漏根本原因的优秀工具。 例如,在JProbe中,您可以直观地查看堆shapshots作为图形,选择要调查的节点,然后删除引用以查看实例是否可以进行垃圾回收。
根据我使用JProfiler的经验,它只是一个比NetBeans探查器更全面的流畅体验。 它更容易上手,更容易理解信息,虽然我没有测量过,但似乎JProfiler对被分析的应用程序的性能影响较小。
此外,JProfiler与IntelliJ IDEA很好地集成。 我必须使用NetBeans来使用NetBeans探查器,这很不方便,因为我必须手动配置自由格式项目以匹配我的项目布局。
NetBeans概要分析器可用。 与IntelliJ不同,我不会为我的个人项目购买JProfiler许可证,因为与IDE不同,它不是您每天都在使用的工具。 但是,对于有偿工作,没有理由不购买更好的工具。 与开发人员的时间成本相比,它并不昂贵。
如果您已经使用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 profiler,但尝试过JProfiler,Yourkit和JProbe。 我发现Yourkit略胜一筹(主要是从可用性方面购买)。 它中的一些有用function是:(您可以检查它是否在Netbeans中可用)
- J2EE概要分析(例如,它显示了SQL查询花了多少时间)。
- 快照比较和注释
- 死锁检测器
- 例外遥测
您可以在他们的网站上查看更多详细信息。
我会说,准备使用和更多性能统计。 去年,当我在一家跨国公司实习时,我被分配了一份剖析工作。 我使用了InfraRED分析器,它使用面向Java方面的API(与Aspectwerkz和AspectJ一起使用)。 但我不得不扩展分析器以获得我的经理想要的东西。 此外,分析器给出的性能统计数据也是有限的。
但在选择剖析器之前,我研究了一些其他的开源剖析器。 其中一些是微不足道的,并不适合我们想要的东西。
我还要补充一点,其中一些只是不起作用。 例如,如果我们要收集Web应用程序的性能统计信息,则所有分析器都不支持我们所需的统计信息。
使用完全独立的分析器,可以更轻松地将其与工具链中的其他应用程序集成。 例如,假设您希望在构建过程中运行探查器(例如,每晚一次)。 像JProfiler这样的东西很容易与ANT集成,而内置于IDE中的分析器可能会也可能不会。 如果您有一个单独的构建计算机,安装分析器的本地副本是有意义的,但安装整个IDE只是为了访问一个组件不会。
根据我的经验,YourKit profiler是最实用的一个。 小的可用性确实有所不同,但它也是最全面的,包含:
- 最全面和可用的内存快照(也适用于1GB +堆),具有详细对象视图和原始数据,适用于每个对象。 (例如,在hashmap中,您可以看到对象是均匀分布的还是大多数存储在同一个存储桶中!)内存快照的详细信息及其易用性是我的主要原因。
- 开销非常小(远远低于我使用的许多其他分析器)
- 比较快照
- J2EE概要分析
- 死锁检测器,锁状态(我认为它仍然错过java.concurrent.locks,芽为同步它很棒)
除此之外,它也在不断改进,所以谁知道未来的抱着:)
比较这些function,看看你是否真的需要商业软件提供的免费function。 如果是,则值得投资。