问题遇到的现象和发生背景
Java程序老是跑着跑着假死了,但是重启之后又可以运行。参考网上的排查教程,我获取到了JVM的相关信息。但是好像看不大明白。有没有大靓仔,小姐姐。帮帮忙,看看这个是不是由于JVM导致的,还是其他的情况!
我的解答思路和尝试过的方法 -- 排查过程
参考文章https://blog.csdn.net/liaomingwu/article/details/125160302第二点:造成假死的可能原因
- java线程出现死锁,或所有线程被阻塞;(我没有看到线程全部阻塞)
- 数据库连接池中的连接耗尽,导致获取数据库连接时永久等待;mybatis超时时间是默认的。
- 出现了内存泄漏导致了OutOfMemory,内存空间不足导致分配内存空间持续失败;服务器的可用内存足够,但是分配给jvm的内存被耗尽的情况,容易出现这种情况;(内存好像也足够,不过老年代占比好像有90%多)。
- 服务程序运行过程中替换了jar包,但是没有进行重启服务,这属于不按规则操作引起的问题;(没有操作)
- 磁盘空间满,导致需要写数据的地方全部失败;(磁盘充足)
- 线程池满,无法分配更多的线程来处理请求,通常是因为线程被大量阻塞在某个请求上;