Java评测:检测哪段代码导致高CPU负载
我用JProfiler和YourKit分析了我的代码。然而,我还没有弄清楚如何检测哪段代码是造成高CPU负载的原因 如果响应时间不好,检测热点是很简单的。在我的情况下,响应时间不是问题。只是在处理这个特定请求的短时间内,CPU负载非常高(惊人地高)Java评测:检测哪段代码导致高CPU负载,java,profiling,cpu,profiler,cpu-usage,Java,Profiling,Cpu,Profiler,Cpu Usage,我用JProfiler和YourKit分析了我的代码。然而,我还没有弄清楚如何检测哪段代码是造成高CPU负载的原因 如果响应时间不好,检测热点是很简单的。在我的情况下,响应时间不是问题。只是在处理这个特定请求的短时间内,CPU负载非常高(惊人地高) 我如何确定哪些类/方法导致了这种情况?我想我要找的是一个列表,它告诉我一个方法的处理需要多少CPU周期,大约如此。CPU负载本质上是指CPU有事情要做的CPU周期数,而不仅仅是摆弄虚拟拇指 因此,如果您的请求实际执行了实际工作(而不是等待磁盘I/O)
我如何确定哪些类/方法导致了这种情况?我想我要找的是一个列表,它告诉我一个方法的处理需要多少CPU周期,大约如此。CPU负载本质上是指CPU有事情要做的CPU周期数,而不仅仅是摆弄虚拟拇指 因此,如果您的请求实际执行了实际工作(而不是等待磁盘I/O),那么在完成工作时,负载会很高,因为cpu有一些事情要做 您需要寻找的是,当响应时间开始攀升时,cpu周期将耗尽
如果您的问题是请求太短,分析器无法向您显示需要查看的内容,那么请考虑使用自动化工具请求它处理成百上千个请求。这应该会有帮助。
在处理过程中,它是100%。当它等待时(例如等待I/O),它处于0%。这两者之间没有任何区别。 当进程占用少于100%时,这是过去N毫秒内的滚动平均值 如果有一种方法可以提高效率,那么它所需的时间将更少,而不是更少的百分比(必然)如果您想找到一种减少时间的方法,请为它提供足够的工作负载,并且。方法热点将是我要查找的地方。你有什么理由不相信这个结果吗?当一个请求被执行时,你不希望CPU是100%(或者至少是一个完整的内核)吗?是的,当然你是对的。测量CPU周期数和测量执行时间直接相关为[执行时间=(周期数*每个周期的时间)+I/O等待等]。“而不仅仅是旋转虚拟拇指”:)+1