Java:添加哪些调试程序以查找导致进程挂起的原因

时间:2019-01-11 14:53:23

标签: java multithreading

正在运行的代码正在循环中处理大量数据。 在整个循环中,时间戳会打印到日志文件中。

For LOOP
{
    Timestamp 1  - Start of Loop
        :
        :
    Timestamp 2
        :
        :
    Timestamp 3
        :
        :
    Timestamp 4
        :
        :
    Timestamp 5 - END of Loop
}

Timestamp之间的延迟可能需要2毫秒到14秒之间的任何时间,该间隔应该花费毫秒。

在某些地方,仅设置原始变量时就会发生延迟。

看到的最奇怪的延迟是从时间戳5到时间戳1,而只是从循环的底部过渡到顶部。

延迟的位置是零星的,甚至将JVM的最小大小从512M设置为1024M,但这从没有影响过。

我打算使用JVisualVM,但这是一台具有JRE 1.6的AIX机器,我找不到要为AIX下载的JVisualVM。

是否可以添加任何调试程序以发现可能导致如此大延迟的原因?

1 个答案:

答案 0 :(得分:0)

在这种情况下,打开垃圾收集跟踪显示了明显的延迟,该延迟与应用程序中发生的延迟的时间戳匹配。