我有一个从eclipse 3.5运行的java应用程序。 我的操作系统是WinXP(SP2),JRE版本是6.05。
我在两台相同的计算机上运行应用程序(或者我认为),但应用程序在每台计算机上的行为都不同。
这些计算机与具有相同内存量且具有相同GPU的Dell Optiplex型号相同。
在第一台计算机上,应用程序运行完美。但是,在第二个应用程序冻结几分钟,然后返回正常运行。
奇怪的是,第二台计算机上的CPU使用率并不高。似乎我的应用程序没有明显的原因没有收到任何CPU。
计算机应该是确定性的,所以我认为机器之间肯定存在一些差异,但我不知道在哪里看。
我很想知道问题可能出在哪里。
谢谢, 约阿夫。
答案 0 :(得分:3)
我发现了问题。
无响应的应用程序在调试模式下运行。
抱歉浪费了你的时间......
答案 1 :(得分:1)
当应用程序冻结时,它可能会帮助您获得Thread Dump。这将有希望告诉你究竟是什么阻碍了你(即在某个地方等待IO)。
答案 2 :(得分:0)
好吧,我会先更新您的JRE版本,因为现在有更新的版本。
两台计算机完全相同,它们真的相同吗?我发现很难相信两者都拥有完全相同的软件和设置以及你对一个人做过的任何事情,你总是对另一个人做过。如果确实如此,您可能想尝试在第二台计算机(挂起的计算机)上调试您的应用程序,并找出它挂起的具体位置。
如果您提供有关您的申请的更多信息,它也可能对我们有所帮助。如果应用程序正在执行Web访问,网络访问等操作,则问题可能根本不是您的计算机。
答案 3 :(得分:0)
因此两台计算机的硬件几乎相同。还有一些其他要检查的事情
答案 4 :(得分:0)
我可以想到两种非应用可能性:
记忆寻呼。在慢速机器上会发生一些额外的事情,因此你的JVM没有得到相当多的CPU时间。一个大的守护进程或其他一些。
网络访问。您的应用正在进行某种网络呼叫,这是故障或超时。也许正在进行并获取一些XML模式,也许磁盘可以访问已安装的驱动器。
当应用程序尝试按名称访问主机并且DNS不太好时,我已经看到了各种奇怪的现象。一台机器有一个etc / host条目,另一台机器没有。甚至每台机器都可能想要自行解决。