伙计,
我正在以采样模式使用JProfiler 8.1来在Linux上对Java 8应用进行概要分析。
JProfiler说,超过50%的时间都花在JDK自己的java.lang.Thread.setName()中!这是第三方应用程序,具有多种更改线程名称的方法。通常,它会缓存线程的当前名称,设置一个不同的名称,执行一些工作,然后将线程名称设置回原始值。在每种情况下,setName()花费的时间都比方法的“实际”工作多。调用树中有多个节点,其中父方法的累积时间可能是例如70秒,但setName()是这70个节点中的60个。
我在java.lang.Thread和java.lang.SecurityManager上设置了一个包含过滤器,但是没有产生更多细节。唯一更改的是setName()方法调用不再在角落有红色的小标记。 JProfiler甚至没有提到对checkAccess()和setNativeName()的调用。
这可能是JProfiler的度量工件吗?我还有其他方法可以查看checkAccess()花费多长时间?
谢谢