千家信息网

java中使用e.printStackTrace()输出日志让系统崩掉怎么办

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍java中使用e.printStackTrace()输出日志让系统崩掉怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!聊一个你可能会经常犯的一个错误!使用
千家信息网最后更新 2026年11月01日java中使用e.printStackTrace()输出日志让系统崩掉怎么办

这篇文章主要介绍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()输出日志让系统崩掉怎么办"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

输出 日志 内存 系统 字符 字符串 空间 线程 错误 信息 产出 怎么办 内容 堆栈 常量 情况 控制台 方法 篇文章 控制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 美国互联网保险保险科技 互联网 科技 迪茉互联网科技 互联网科技上市公司 苏州大垚互联网科技 互联网科技创新企业排名 互联网公司会议桌创意科技软装饰 上海电发互联网科技有限公司 现代科技和互联网有关系吗 欧洲十大科技互联网公司 科技与互联网哪个更好 互联网科技与管理 注册互联网科技公司经营范围大全 中国科技创新与世界互联网大会 企晟互联网信息科技有限公司 互联网相关科技技术 陕西九四连强互联网科技有限公司 马化腾互联网科技教学 恒生互联网科技趋势 上海卓越科技互联网 互联网科技公司税收优惠 科技与互联网发展 奇酷互联网络科技公司 深圳卡尔迅互联网科技有限公司怎么样 互联网科技和法律行业 恒生互联网科技业指数调整周期 上海钢联属于互联网科技股吗 易企秀互联网科技是做什么的 盐城市攀科互联网科技有限公司
0