推荐在远程linux机器上运行的Java应用程序的分析器?

时间:2010-09-07 17:17:56

标签: java profiling

我正在寻找一个分析器,而不是可以分析在单独的Linux机器上运行的Java6应用程序(没有Windows管理器)。

该应用程序是一个对延迟敏感的多线程服务器,通常在几百微秒(小于1毫秒)内响应传入的网络事件。我有兴趣了解代码的热门部分和争用锁,我对内存使用模式不太感兴趣。

我不关心分析运行期间的分析开销,我预计会有性能损失。

3 个答案:

答案 0 :(得分:3)

Yourkit非常好,除了我会说分析器通常对于亚毫秒延迟应用程序的采样不是很有用。

但是,如果你没有查看你的内存使用情况,那么我将从这里开始。你如何确保最小化;对象创建,缓存未命中,上下文切换开销(从线程之间传递数据)?你的所有代码都热身了吗?即所以你没有打任何密码。

我建议您使用nanoTime()为您的应用程序中的关键执行路径添加时间戳,以记录关键阶段每个请求的时间,以查看您遇到最大延迟的位置。

顺便说一句:有可能获得一个100微秒响应时间的Java应用程序。

BTW2:可以在白天减少Full GC的数量,并且仅在晚上使用系统Full GC。通过增加伊甸园的大小,你可能会达到没有次要收藏的程度。

答案 1 :(得分:1)

我很高兴使用yourkit profiler: http://www.yourkit.com/

您的里程可能会有所不同,但我喜欢它,值得一看。在过去,我使用它来识别和避免锁争用,我知道它有能力识别代码的热门部分(就像我期望的任何分析器一样)

答案 2 :(得分:0)

结帐NetBeans Profiler。建议它没有其他人建议相同。这个看起来更丰富。

我几次使用其他工具"JProfiler"。但它只能免费试用。