使用 NetBeans Profiler 5.5
分析单线程和多线程应用程序
Profiler 对它已分析的方法进行性能分析时,与执行这些方法的线程无关。也就是说,每个进入根方法的线程开始生成性能分析数据,直至它离开根方法为止。但是,如果已知所有线程具有相同的行为,则通常没有必要对进入根方法的每个线程进行分析。为减少这种情况下的开销,可以对要进行分析的最大并发线程数设置限制。缺省情况下,此线程数为 32,我们认为这个数目对于大多数多线程应用程序来说已经足够。如果将其设置为 n,则会导致 Profiler 只分析进入根方法的前 n 个线程;如果 n 较小,则可以使开销大大减少。
另一方面,对于多线程应用程序而言,在刚开始分析应用程序时,查看其启动的所有线程通常是很重要的。为了解决这一问题,我们添加了一个选项,该选项将所有类的所有 void run() 方法视为隐式根,其中的这些类或者是 java.lang.Runnable 的扩展类,或者是 java.lang.Runnable 的实现类,并且在启动指定根方法后由 VM 装入。也就是说,装入这些类后即分析其 void run() 方法。不过,只有在装入根方法后此过程才会启动,并且只适用于装入根类后装入的类。如果根方法是应用程序的 main 方法,则会分析所有应用程序线程;否则只分析根方法调用后启动的线程。要打开此功能,请选中“分析”->“在根方法后启动的线程”。
另请参见
