Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无死锁的Java线程挂起_Java_Multithreading_Process_Freeze - Fatal编程技术网

无死锁的Java线程挂起

无死锁的Java线程挂起,java,multithreading,process,freeze,Java,Multithreading,Process,Freeze,我目前在挂起的进程中遇到一些问题 首先,下面的线程转储显示没有死锁。另一件有趣的事情是,这个过程挂在java.lang.System.identityHashCode方法上。当前该进程的CPU使用率为0%,有时峰值为1%。。。通常该过程使用100%。它使用1.7GB的RAM(这在这个过程中是正常的)。这台机器有大量可用的CPU、磁盘空间和RAM Attaching to process ID 4146, please wait... Debugger attached successfully.

我目前在挂起的进程中遇到一些问题

首先,下面的线程转储显示没有死锁。另一件有趣的事情是,这个过程挂在
java.lang.System.identityHashCode
方法上。当前该进程的CPU使用率为0%,有时峰值为1%。。。通常该过程使用100%。它使用1.7GB的RAM(这在这个过程中是正常的)。这台机器有大量可用的CPU、磁盘空间和RAM

Attaching to process ID 4146, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 23.7-b01
Deadlock Detection:

No deadlocks found.

Thread 12761: (state = BLOCKED)


Thread 4159: (state = BLOCKED)


Thread 4158: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.ref.ReferenceQueue.remove(long) @bci=44, line=135 (Interpreted frame)
 - java.lang.ref.ReferenceQueue.remove() @bci=2, line=151 (Interpreted frame)
 - java.lang.ref.Finalizer$FinalizerThread.run() @bci=3, line=177 (Interpreted frame)


Thread 4157: (state = BLOCKED)
 - java.lang.Object.wait(long) @bci=0 (Interpreted frame)
 - java.lang.Object.wait() @bci=2, line=503 (Interpreted frame)
 - java.lang.ref.Reference$ReferenceHandler.run() @bci=46, line=133 (Interpreted frame)


Thread 4147: (state = IN_VM)
 - java.lang.System.identityHashCode(java.lang.Object) @bci=0 (Compiled frame; information may be imprecise)
 - java.util.IdentityHashMap.hash(java.lang.Object, int) @bci=1, line=301 (Compiled frame)
 - java.util.IdentityHashMap.containsKey(java.lang.Object) @bci=17, line=358 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=18, line=346 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.FastClonerArrayList.clone(java.lang.Object, com.rits.cloning.Cloner, java.util.Map) @bci=47, line=23 (Compiled frame)
 - com.rits.cloning.Cloner.fastClone(java.lang.Object, java.util.Map) @bci=30, line=96 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=100, line=355 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.FastClonerArrayList.clone(java.lang.Object, com.rits.cloning.Cloner, java.util.Map) @bci=47, line=23 (Compiled frame)
 - com.rits.cloning.Cloner.fastClone(java.lang.Object, java.util.Map) @bci=30, line=96 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=100, line=355 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.FastClonerArrayList.clone(java.lang.Object, com.rits.cloning.Cloner, java.util.Map) @bci=47, line=23 (Compiled frame)
 - com.rits.cloning.Cloner.fastClone(java.lang.Object, java.util.Map) @bci=30, line=96 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=100, line=355 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.FastClonerArrayList.clone(java.lang.Object, com.rits.cloning.Cloner, java.util.Map) @bci=47, line=23 (Compiled frame)
 - com.rits.cloning.Cloner.fastClone(java.lang.Object, java.util.Map) @bci=30, line=96 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=100, line=355 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.FastClonerArrayList.clone(java.lang.Object, com.rits.cloning.Cloner, java.util.Map) @bci=47, line=23 (Compiled frame)
 - com.rits.cloning.Cloner.fastClone(java.lang.Object, java.util.Map) @bci=30, line=96 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=100, line=355 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.cloneInternal(java.lang.Object, java.util.Map) @bci=368, line=404 (Compiled frame)
 - com.rits.cloning.Cloner.deepClone(java.lang.Object) @bci=61, line=309 (Compiled frame)
 - arquitetura.representation.Architecture.deepClone() @bci=23, line=497 (Compiled frame)
 - jmetal.operators.mutation.PLAFeatureMutation.execute(java.lang.Object) @bci=109, line=862 (Compiled frame)
 - jmetal.metaheuristics.nsgaII.NSGAII.execute() @bci=321, line=129 (Compiled frame)
 - br.ufpr.inf.opla.patterns.main.NSGAII_OPLA.main(java.lang.String[]) @bci=1116, line=179 (Interpreted frame)
我用不同的参数执行相同的过程已经有一段时间了(一个多星期)。我使用的是进化算法,所以对于我的问题来说,耗时是正常的。我执行了120次相同的进程(使用不同的参数),这是第一个挂起的。目前有4个进程同时运行(包括挂起的进程),有些甚至更复杂,需要花费更多的时间。它们正在完成,我的程序正在正常使用ProcessBuilder启动其他进程。我确实读了每一个的输出。挂起的进程在距离结束不到一半的时候输出了正常日志。没有错误。另一件重要的事情是,将流程冻结在的方法不会生成任何输出,因此我假设在输出消耗方面没有问题

我的问题是:我不想终止进程,那么有没有办法
取消进程的运行?另外,为什么它处于虚拟机的
状态(在虚拟机中运行),并且仍然处于冻结状态?进程冻结在
java.lang.System.identityHashCode
方法中是否正常?为什么它使用我的CPU的0%(很少达到1%的峰值)

如果我能提供任何其他信息,请直接询问,我将很乐意在这里发布

提前谢谢

编辑:虽然我使用多线程,但每个线程都使用
ProcessBuilder
启动一个
进程
对象。因此,挂起过程是一个单独的JVM实例,只执行一个主线程。我将输出重定向到一个文件,但如前所述,进程挂起在一个不生成输出的方法上,因此我假设输出消耗没有问题


EDIT2:终止进程。随后的进程已启动并且运行顺利。

进程没有挂起,您只是碰巧发现它处于上面发布的状态。您可以判断,因为所讨论的线程不像其他线程那样说阻塞,所以它处于正常执行状态

为什么进程不再执行可能有不同的原因,但我可以向您保证,它们都与
identityHashCode
无关,因为这是一个经过良好测试的内部Java函数

进行:

  • 比较几个挂起的JVM状态。如果始终与上面相同,则问题可能与哈希生成有关。如果没有:

  • 发布更多相关代码,以便我们可以查看。如果问题不在这一行代码中,那么它必须在其他地方(com.rits.cloning.clonner
听起来是一个开始寻找的合理点)

  • 告诉我们您试图归档的内容,有人可能会找到一个bug或更好的方法来归档,从而完全避免了导致问题的任何原因


  • 为什么挂起的进程多次在日志上出现“-com.rits.cloning.Cloner.cloneInternal(java.lang.Object,java.util.Map)@bci=368,line=404(编译帧)”行?有没有一个自然的原因,或者说是绞死的根源,你的过程是在某种永恒的循环中制造克隆体(或者不管那条线意味着什么)?只是出于好奇。不是死锁,而是活锁?这很正常。它是对一个非常大的对象进行深度克隆,然后将其转换为一组继承的XML标记。因此,像这样克隆各种对象是正常的。您的代码依赖于字节码操作吗?我想您可以尝试获取identityHashCode方法的源代码——它是本机的,因此您需要从您正在使用的任何JVM实现中获取它,并复习您的C技能。@GiovaniGuizzo,JVM_IHashCode()将直接调用Object.hashCode()方法。如果对象是字符串,则不会调用任何hashCode()重写,例如String.hashCode()。我不知道Object.hashCode()到底是做什么的,但它没有理由等待或计算任何东西。在任何合理的实现中,它都不会比简单地返回对象的地址更复杂。