程序按照Netbeans运行,但没有任何进展,java.exe几乎不使用CPU

程序按照Netbeans运行,但没有任何进展,java.exe几乎不使用CPU,java,netbeans,cpu-usage,Java,Netbeans,Cpu Usage,我是这个网站的新手,所以我希望我不会违反这里的任何不成文的规则…;-) 我为旅行商问题编写了一个启发式程序,首先创建一个最小生成树,扩展它来创建一个欧拉旅行,然后从欧拉旅行中导出一个哈密顿圆 该程序对多达3700个顶点的图形非常有效(虽然这需要一些时间,在我的笔记本电脑上大约需要三个小时),但现在,当我尝试求解约4300个顶点的图形时,似乎出现了问题 MST一如既往地创建,但在创建Euler Tour时,CPU似乎在我的程序中“失去了兴趣”。根据Windows任务管理器,java.exe进程在解

我是这个网站的新手,所以我希望我不会违反这里的任何不成文的规则…;-)

我为旅行商问题编写了一个启发式程序,首先创建一个最小生成树,扩展它来创建一个欧拉旅行,然后从欧拉旅行中导出一个哈密顿圆

该程序对多达3700个顶点的图形非常有效(虽然这需要一些时间,在我的笔记本电脑上大约需要三个小时),但现在,当我尝试求解约4300个顶点的图形时,似乎出现了问题

MST一如既往地创建,但在创建Euler Tour时,CPU似乎在我的程序中“失去了兴趣”。根据Windows任务管理器,java.exe进程在解决较小的图形时使用了大约25%的CPU(四个核心之一),但现在已降至0-1%。根据Netbeans IDE,该程序仍在运行,但我不确定如何利用这些信息

也许我必须克服一些OutOfMemory错误(堆空间)是相关的,我通过暴力解决了这些错误——我允许项目创建一个4090MB的堆(4GB RAM)——以及一些可能与这里无关的代码更改

如果有人能给我一个提示,我会很高兴的

问候,,
Phil

发生这种情况可能是因为您的程序中有一个线程尚未完成


您的线程可能处于活动状态,因为它被发送到睡眠状态而从未唤醒,或者可能出现死锁。我建议您使用来确定是否有线程仍在运行,甚至查看在程序的哪个点上CPU使用率从高到低,再加上一些日志记录,可能会帮助您找出确切的问题。

执行程序时是否有日志记录?也许它在某个点停止,只是看起来正在运行,尝试获取一个线程转储,可能在某个地方出现了死锁