java中使用e.printStackTrace()输出日志让系统崩掉怎么办
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍java中使用e.printStackTrace()输出日志让系统崩掉怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!聊一个你可能会经常犯的一个错误!使用
千家信息网最后更新 2025年01月31日java中使用e.printStackTrace()输出日志让系统崩掉怎么办聊一个你可能会经常犯的一个错误!使用 e.printStackTrace() 输出日志是怎样让系统崩掉的!
从方法 printStackTrace 自注释上来看,该方法是输出打印异常的堆栈跟踪信息的。由于,我们从学习 Hello World 的那一天开始,老师就是使用 printStackTrace 输出错误日志的,导致很多人一直错误的使用它并沿用至今!
printStackTrace 严重的来说,它可能会导致我们的系统崩溃。因为,e.printStackTrace() 在打印异常到控制台时,会将产生错误堆栈字符串存入到字符串池内存空间,如果此时的空间比较小,并且异常多,此内存空间可能一下子就被占满了,并且有些在此内存空间产出字符串的线程还没完全生产完整,就没空间了,导致大量线程产出字符串产出到一半,都等在这了,相互等待,等空闲内存,最终会抛出 OOM,导致整个应用挂掉。
在这种情况下,如果使用 java jvisualvm 来查看内存使用情况,你会发现下图中最右侧的非堆区域,也就是字符串常量池已经满了!
在接着查看线程信息。
你会发现,大量的线程被卡在了异常输出的位置。通过具体的行号信息,查看源码。
确实是 e.printStackTrace() 的锅。
那么该怎么解决呢?
1、提高代码质量,从源头解决。先解决为什么会抛异常。
2、增加内存,增加非堆内存,增加字符串常量池的内存。 3、禁止使用 e.printStackTrace() 输出日志。 4、提升系统的容错能力。
除此之外,e.printStackTrace() 是将日志输出到控制台,如果我想将日志输出到文件,或者第三方服务器上,它就无能为力了。而如果你的系统中大量的使用了 e.printStackTrace(),那么改动的时间和代价就太大了!
另外,也有不少人喜欢使用 System.out.println() 输出日志。我也非常不建议,去年我还写过一篇关于 System.out.println 危险性的文章。不知道大家是否还记得? 都 9102 了,你还不知道 System.out.println 的危害!
这篇文章主要介绍java中使用e.printStackTrace()输出日志让系统崩掉怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
以上是"java中使用e.printStackTrace()输出日志让系统崩掉怎么办"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
输出
日志
内存
系统
字符
字符串
空间
线程
错误
信息
产出
怎么办
内容
堆栈
常量
情况
控制台
方法
篇文章
控制
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
公安网络安全网
关系数据库处理非结构化
网络安全禁毒教育频台
服务器被打了可以打开宝塔吗
电信网络安全部
vfp数据库应用技术教案
时尚天河网络安全
互联网科技巨头垄断专家
用专线搭服务器
邢台软件开发公司
网络安全教育黑板板报
鲁南制药软件开发怎么样
网络安全技能广安杯
计算机网络技术的应用绪论
pg库新建数据库
广州线上内训软件开发
网络安全法哪年起实行
mysql中的默认数据库
武汉网络技术
spl 2008导入数据库
青海数字化城管软件开发系统
济宁胜通软件开发中心
网络安全辩论赛问题答案
深圳星辰互联网科技
plsql怎么新建数据库
阿里网络技术总监
5g下软件开发趋势
网络安全和网络道德主题班会教案
网络安全法哪年起实行
提升自身的网络安全知识