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
}
}
我怀疑如果你试试这个:
ex.printStackTrace();
,你可能会得到一些更多的信息。现在,当你发生异常时,你不知道发生了什么或者为什么。你对此保持沉默,这很少是打击例外的正确行为。
什么是处理?如果你想做很多工作,那么去60%cpu也许并不意外。算法的大O运行时间是什么?数据集的大小是多少?
egarding MyFunction()。它包含解析xml的代码。我以xml的形式传递进程中的数据,该函数迭代所有节点以获取数据。所有这些都发生在单线程中。 CPU使用率从40%到60%不等,有时甚至会冻结我的机器 –
这里是Process Explorer完成的分析图像的链接[链接](http://www.123dl.org/installer/C/processs.png )。 为什么本地线程会占用最大的cpu周期? –
为什么一些代码需要很多时间是一个非常广泛的问题,迭代答案太多。所有的缓慢问题最终归结为算法和技术问题。如果你可以谈论你在做什么的算法复杂性,可以追求缓慢的技术原因,但就目前而言,我不想排除低效算法是正确的。 – juckele
如果你在这里显示你的代码可能会有所帮助! –
您需要JProfiler – ControlAltDel
刚刚发布的代码 –