如何分析反射调用的Java方法

时间:2014-10-22 08:42:06

标签: java reflection profiling visualvm jvisualvm

我正在使用JVisualVM来分析我的Java应用程序。

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

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时间。我怎样才能做到这一点?感谢。

1 个答案:

答案 0 :(得分: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)