我创建了一个可运行的jar,它运行在一个线程上。线程执行具有100次迭代的for循环。然而,在i3处理器win7 64位机器上,cpu usgae上涨了60%。 我试图分析process Explorer
中的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
}
}
答案 0 :(得分:1)
对您的代码进行了描述,有关详细信息,请参阅somewhere in the documentation。
答案 1 :(得分:0)
我怀疑如果你试试这个:
ex.printStackTrace();
您可能会获得更多信息。现在,当你得到一个例外时,你不知道发生了什么或为什么。你对它保持沉默,这对于击中异常很少是正确的行为。
什么是处理?如果您正在尝试做很多工作,那么转到60%cpu可能并不出人意料。您的算法的Big O运行时是什么?数据集大小是什么?