2011-07-16 70 views
6

这似乎是一个愚蠢的问题,但要求对计算器的一些问题,并寻找其他人的问题后,自带往往一件事就是用廓线仪,看看哪些部分的代码运行速度慢等需要知道如何使用探查/使用哪一个

作为一个编程初学者,我是新来的这一切,但自从我创建越做越大的项目,我觉得像这样的工具将被证明是在非常有用倍。唯一的是,我不知道如何使用它们。

通常情况下,我使用JDeveloper的代码在Java中,我认为有一内置在互联网上阅读。我尝试过使用它,但我想我并不知道如何,因为我无法找到哪些部分让我的程序变慢。我不知道是不是因为我不知道如何使用它,或者如果它被称为不好,所以我想我会问在这里看看我应该从哪一个开始。

我也安装了Eclipse,并知道如何使用它(当我编码一些Python时,或者当我尝试Android开发教程时使用Eclipse),所以如果有一个免费的profiler可以用于这两个IDE中的任何一个,我都很想知道它。另外,我需要了解一些关于配置文件的教程或基本知识,这对我有很大的帮助。

在此先感谢和抱歉,我的问题是不是真正的编程,但是这似乎是最好的地方,以获得关于探查有价值的信息。

回答

3

如果您感到困惑,so are most of the profiler vendors

首先要理解的是 - 程序不会很慢,因为它们有缓慢的部分(瓶颈)。 他们很慢,因为他们比他们做得更多。他们有时间流失。

这就像一场赛马比赛。 瓶颈是赛道上狭窄的地方,马匹必须堆放并放慢速度。 时间流失将像另一首曲目与第一首歌曲融合在一起,马匹在其中漫游并且必须行驶一段距离。 然后,可能会有另一条轨道与另一条轨道相融合,等等。

可以避免的函数调用就是时间消耗的一个例子。

Here's how I find time drains.这是简单的和语言无关的。 你甚至可以用一个简单的工具,如jStack

探查器制造商的意思很好,但它们受到一系列混淆概念的阻碍。

比如“花在哪里”。如果这意味着“程序柜台最常被发现的地方”,那就像马匹在错误的赛道上。 你可以尝试缩短赛道,但真正的问题是马不应该在那里。即有一个应该被避免的函数调用。

如“统计准确度测量”。你需要衡量马在错误的赛道上绕过多长时间才能知道它在错误的赛道上?不,你只需要拍一张快照(堆栈样本)。 在错误的赛道上时间越长,您就越有可能看到它。 如果你有两次看到它,你知道问题是什么。

如将其称为“CPU Profiler”,这是忽略I/O时间的借口。 有时候,您不知道的时间流失是不必要的I/O。这就像马停在一袋燕麦上。 如果您只能在马匹运行时拍摄快照,您永远不会注意到。 你只会注意到时间很可疑。

more where those came from ......

+0

您发布的链接非常有趣。我会尝试应用你所建议的,我相信它将在未来帮助你。非常感谢! –

3

如果你正在寻找一个免费的工具,jvisulavm是一个伟大的。它带有一个标准的JDK安装,其可执行文件通常位于JAVA_HOME的bin目录下,位于java,javac,javadoc和它们的兄弟旁边。这里是一个教程:

http://download.oracle.com/javase/6/docs/technotes/guides/visualvm/index.html

如果你正在寻找一个更先进的商业产品YourKitjprofiler都很有趣。

+1

VisualVM的释放比JDK更有规律,所以你可能需要下载[最新版本](http://visualvm.java.net/download.html)。 –

1

使用事件探查器不是一项简单的任务,它需要大量关于虚拟机内部的背景知识。因此,最好从阅读内存管理,热点等开始。一些体面的帮助可以在Profiler帮助页面找到,例如,参见help for JProfiler

以我的经验,我只有使用Profiler几次当出现一些严重的性能问题可能无法通过其他方式进行跟踪。在许多情况下,简单的事情(如日志中的时间戳)有助于解决性能问题。所以使用探查器作为最后的手段。说,我听说过有人会定期使用它的情况。我虽然关于它,但永远不可能让这个过程为我工作。

我无法找到任何可以满足我的免费探查器。我在不同时间使用的商业版是JProbeJProfiler。我更喜欢JProfiler,但都让你获得结果。

一般来说,过程开始配置里面探查您的应用程序,并告诉它要专门研究哪些类。当您在Profiler中启动应用程序时,类将以这样的方式进行检测,以使有关执行和VM的信息得到记录。因此,在运行应用程序之后,您可以分析它以查看大部分时间消耗哪些代码以及哪些对象使用了大部分内存。您通常还可以监视线程,监视器和其他事物的数量。要充分利用所有数据,您需要了解有关虚拟机内部和您正在分析的代码的大量信息。

祝你好运!

相关问题