javaw.exe CPU使用率高

javaw.exe CPU使用率高

问题描述:

我创建了一个可在单个线程上运行的可运行jar。该线程执行具有100次迭代的for循环。然而,CPU igae在i3处理器win7 64位机上高达60%。 我试图分析process Explorer的CPU使用率javaw.exe CPU使用率高

原生线程正在消耗CPU。 本机线程都在msvcr100.dll!endthreadex + 0x60 正在使用cpu 我正在使用jdl 1.7。 有人可以请建议这里可能会出现什么问题。

这是代码: 该应用程序接受套接字连接并处理客户端发送的日期。

while (true) 
{ 
    try 
    { 
     Socket sock = ssock.accept(); 
     // This is the function which has the for loop   
     obj.MyFunction();   
    } 
    catch(Exception ex) 
    {    
     ssock.close(); 
    } 
    Thread.sleep(1000); 
}     

void MyFunction() 
{ 
    for(int i=0; i < 1000;i++) 
    { 
     // Processing done here 
    } 
} 
+2

如果你在这里显示你的代码可能会有所帮助! –

+0

您需要JProfiler – ControlAltDel

+0

刚刚发布的代码 –

简介您的代码,请参阅http://docs.oracle.com/javase/7/docs/technotes/tools/index.html#jconsole了解更多信息。

我怀疑如果你试试这个:

ex.printStackTrace(); 

,你可能会得到一些更多的信息。现在,当你发生异常时,你不知道发生了什么或者为什么。你对此保持沉默,这很少是打击例外的正确行为。

什么是处理?如果你想做很多工作,那么去60%cpu也许并不意外。算法的大O运行时间是什么?数据集的大小是多少?

+0

egarding MyFunction()。它包含解析xml的代码。我以xml的形式传递进程中的数据,该函数迭代所有节点以获取数据。所有这些都发生在单线程中。 CPU使用率从40%到60%不等,有时甚至会冻结我的机器 –

+0

这里是Process Explorer完成的分析图像的链接[链接](http://www.123dl.org/installer/C/processs.png )。 为什么本地线程会占用最大的cpu周期? –

+0

为什么一些代码需要很多时间是一个非常广泛的问题,迭代答案太多。所有的缓慢问题最终归结为算法和技术问题。如果你可以谈论你在做什么的算法复杂性,可以追求缓慢的技术原因,但就目前而言,我不想排除低效算法是正确的。 – juckele