我有一个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麻烦大神帮忙解答下
执行完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. 调用了需要BLOCK的函数,比如Object#wait,等待导致了软件挂起。
2. 调用了其他服务器或者大文件而没有返回,比如InputStream#read、Channel#read等操作,导致软件挂起。
3. 内存分配不足,而实际消耗内存过高,导致软件挂起。
4. 建好日志系统,为了调试这种问题,可以每个线程输出到不同的日志文件中,每个循环都打印日志,看看最后的日志停在什么地方。
5. 是不是系统的问题?虽然可能性很小,而且操作系统在很多Linux/Windows版本上都运行的很好,但不排除某些小众操作系统的JVM出现异常。
祝好运!