java中使用e.printStackTrace()输出日志让系统崩掉怎么办
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍java中使用e.printStackTrace()输出日志让系统崩掉怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!聊一个你可能会经常犯的一个错误!使用
千家信息网最后更新 2025年12月02日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安全错误
数据库的锁怎样保障安全
cad怎么软件开发
学习电脑网络技术的学校
网络安全三个基本属性是什么
打印机服务器不能提供服务
服务器切换用户后显示器突然黑屏
喀什天气预报软件开发
数据库技术是从
好的软件开发设计公司哪家好
tidb 数据库
知网数据库怎么查到
王都创世物语连不上服务器
苹果软件开发要学多久
橘子端apex哪个服务器不卡
求生之路2外国服务器
提高服务器并发
万向信托软件开发团队
tomcat数据库解密
公安部网络技术研究单位
中专计算机网络技术工资
温州软件开发工资多少一个月
去哪里可以学软件开发
数据库view什么意思
我国网络安全保险发展历史
金铲铲之战光明哨兵服务器
网络安全人才培养存在的不足
数据库触发器在视图起作用吗
软件开发技术部副经理的职责
苹果电脑直连服务器导出日志
关系数据库管理系统英文缩写
网络技术下载网站