我有一个java项目,但是不定期的会僵死。
执行完jmap -F后,系统自动恢复了。
我还执行过jstack,也必须使用-F,拿到的文件所有线程全部blocked,且没有死锁或者等待某些资源的提示。执行完jstack -F,系统也能自动恢复。
   PC       PU        OC          OU       YGC    FGC    FGCT     GCT   
262144.0 159521.7   4194304.0    329202.4     44     0    0.000    1.742麻烦大神帮忙解答下

解决方案 »

  1.   

    jvisualvm 看看线程状态  
      

  2.   

    也曾遇到过这种情况,定位问题确实耗费时间。如果JVM没有发现异常,可以考虑如下情况:
    1. 调用了需要BLOCK的函数,比如Object#wait,等待导致了软件挂起。
    2. 调用了其他服务器或者大文件而没有返回,比如InputStream#read、Channel#read等操作,导致软件挂起。
    3. 内存分配不足,而实际消耗内存过高,导致软件挂起。
    4. 建好日志系统,为了调试这种问题,可以每个线程输出到不同的日志文件中,每个循环都打印日志,看看最后的日志停在什么地方。
    5. 是不是系统的问题?虽然可能性很小,而且操作系统在很多Linux/Windows版本上都运行的很好,但不排除某些小众操作系统的JVM出现异常。
    祝好运!
      

  3.   

    hello,你好,我也出现了和您类似的问题,请问您找到原因了吗