项目中或多或少遇到都会死循环的问题,如果出现死循环就会造成CPU过多的占用,服务器性能急剧下,这样就会降低开发人员工作效率,那java死循环会报错吗?下面来我们就来给大家讲解一下。
java死循环会报错。
java死循环如何排查?
如果遇到线上应用cpu飙升,并出现OutOfMemery首先线上应用的jvm配置要养成良好的习惯,增加一下配置则可以在jvm发生oom的时候自动dump日志了 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/export/log/dump/jvm-oom.log
如果遇到线上应用特别消耗cpu资源怎么去排查?
ps:首先普及一下linux中的java虚拟机线程实现方式:在Linux下面因为没有真正的线程,是用进程模拟的,有一个是辅助线程,所以真正程序开的线程应该只有一个。
一、查看java进程
使用jps 或者ps -ef 查找到相应的java进程或者使用top查看机器占用cpu比例高的进程(进程号:13408)
二、使用top -H查看线程,进程号:13432
三、将线程号:13432转换成十六进制:3478
四、查看dump文件或者使用jstack | grep
java死循环有哪些危害?
1.程序进入假死状态, 当某个请求导致的死循环,该请求将会在很大的一段时间内,都无法获取接口的返回,程序好像进入假死状态一样。
2.cpu使用率飙升,代码出现死循环后,由于没有休眠,一直不断抢占cpu资源,导致cpu长时间处于繁忙状态,必定会使cpu使用率飙升。
3.内存使用率飙升,如果代码出现死循环时,循环体内有大量创建对象的逻辑,垃圾回收器无法及时回收,会导致内存使用率飙升。同时,如果垃圾回收器频繁回收对象,也会造成cpu使用率飙升。
4.StackOverflowError,在一些递归调用的场景,如果出现死循环,多次循环后,最终会报StackOverflowError栈溢出,程序直接挂掉。
java死循环的危害还是很大的,所以开发人员一定要学会排查死循环,降低发生死循环的概率,最后大家如果想要了解更多java常见问答知识,敬请关注奇Q工具网。
推荐阅读: