2014-10-22 60 views
0

我正在使用JVisualVM来剖析我的Java应用程序。如何剖析调用的Java方法反射

在我的应用程序中,我使用反射来运行一些方法。例如:

public void a() {} 

public void b() {} 

public void runMethod() { 
    Method m = this.getClass().getMethod("a"); 
    // or getMethod("b) in some cases 
    m.invoke(this, []) 
) 

在JVisualVM分析,只能看到由runMethod使用的CPU时间。我想看看方法ab使用了多少CPU时间。我怎样才能做到这一点?谢谢。

+0

有没有必要做一些特别的。必须显示方法的结果。如果你使用抽样可能'a'执行得太快而且统计上也不会发生。 – talex 2014-10-22 08:57:47

+0

@talex是的,你是对的!谢谢。 – 2014-10-22 09:10:18

回答

0

,你可以这样做:

 public void a(){    // just for testing 
      try { 
       Thread.sleep(1);   //OR some for loop to print something 
      } catch (InterruptedException e) { 

      e.printStackTrace(); 
      } 
     } 

      long startTime=System.currentTimeMillis(); 
      m.invoke(Bidlist[0], null); 
      long endTime=System.currentTimeMillis(); 
      System.out.println("show takes "+(endTime-startTime)+" ms"); 

,因为你不是在做a任何操作,它会给0。要明白,我把sleep(1)