Java可视虚拟机倾斜CPU

Java可视虚拟机倾斜CPU,java,profiling,visualvm,jvisualvm,Java,Profiling,Visualvm,Jvisualvm,我试图分析运行在Windows上的Java UI应用程序的CPU使用情况。我将它连接到VisualVM,但看起来CPU使用率最高的是 sum.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(); 我相信这是用来向VisualVM提供信息的,因此VisualVM歪曲了我试图调查的结果。是否有人有办法更好地指示正在发生的事情,或者有更好的方法来确定正在运行的java应用程序中占用这么多CPU的是什么 这听起来非常可疑。尝试将数据与来自的结果

我试图分析运行在Windows上的Java UI应用程序的CPU使用情况。我将它连接到VisualVM,但看起来CPU使用率最高的是

sum.rmi.transport.tcp.TCPTransport$ConnectionHandler.run();

我相信这是用来向VisualVM提供信息的,因此VisualVM歪曲了我试图调查的结果。是否有人有办法更好地指示正在发生的事情,或者有更好的方法来确定正在运行的java应用程序中占用这么多CPU的是什么

这听起来非常可疑。尝试将数据与来自的结果交叉引用。您不需要运行任何外部应用程序,数据将从您自己的进程转储到文本文件中。您是否远程连接到流程?

请先尝试使用sampler。
有关详细信息,请使用探查器和set root方法。有关CPU和内存配置的更多信息,请参阅和。

VisualVM和我的应用程序都在同一台机器上运行。了解该程序正在做什么。基本上,把软件想象成一个时钟。第二种方法由分钟方法、小时方法和天方法调用。如果你只是拍下它的快照,你就可以通过检查所有级别来了解它在做什么。连续做几次,你就会知道它花了多少时间。通过快照,我假设你指的是堆栈跟踪。如何判断正在运行的线程?与阻塞的线程相比?与等待调度的线程相比?抓住所有线程,研究每个线程。你可以很容易地分辨出每个人在做什么。大多数你可以轻易忽略。你可以通过它在做什么来判断你关心哪一个,不管它是在嘎吱作响,还是在等待IO,或者是在睡觉,等等。不需要受过教育的猜测。