e.printStackTrace() 会导致锁死?

这仅仅是打印啊,怎么可能?!

先别惊呼不可能,且听我细细道来。

先看截图1:

注意右下角区域,红框部分。这块内存是什么呢?

非堆!那么,左边是代码缓存区内存,右边红框就是字符串池,常量,基本类型数据的内存区。

然后呢?已经满了。什么原因呢?e.printStackTrace()!

满了的后果呢?整个web服务,访问之后,没响应了,就当是卡死掉了。

再来看截图2:

看看有多少web的请求线程,被卡住在打印这一步!

原因呢?

要打印字符串输出到控制台上,那你字符串常量池所在的内存块要有空间啊。

然而,因为 e.printStackTrace()语句要产生的字符串记录的是堆栈信息,太长太多,内存被填满了!注意 上面代码语句:4208行!

来看图3:

没毛病,没没事儿找事儿冤枉谁。就是这句代码惹的祸!当然,我承认,被 try 住的代码本身就有问题,导致很多调用都会抛异常。

那么,让我们再来理理整个事件产生的经过:

短时间内大量请求访问此接口

-> 代码本身有问题,很多情况下抛异常

-> e.printStackTrace() 来打印异常到控制台

-> 产生错误堆栈字符串到字符串池内存空间

-> 此内存空间一下子被占满了

-> 开始在此内存空间产出字符串的线程还没完全生产完整,就没空间了

-> 大量线程产出字符串产出到一半,等在这儿(等有内存了继续搞啊)

-> 相互等待,等内存,锁死了,整个应用挂掉了。

综上,这就是 e.printStackTrace() 引发的血案。

总结当然重要,有3点:

1,代码质量啊亲,代码不抛异常咱不就能愉快的继续浪么?

2,不要使用 e.printStackTrace() 啊,这玩意儿,在项目发布后,除过不断的刷控制台,并没用什么卵用啊,您到是用 log 对象输出到日志文件里面啊。

3,推及开来,在java中,会产生大量字符串的方法,使用时,一定得悠着点,别一不小心撑到肚子(字符串池所属的那么点非堆内存空间),撑到肚子了,会死的啊 。

e.printStackTrace() 导致系统卡崩相关推荐

  1. Oh My God!e.printStackTrace() 导致系统卡崩

    作者:sxgkwei 来源:http://dwz.cn/tQe4fLeD e.printStackTrace() 会导致锁死? 这仅仅是打印啊,怎么可能?! 先别惊呼不可能,且听我细细道来. 先看截图 ...

  2. Windows10磁盘占用率100%(ntoskrnl占用资源)导致系统卡顿

    欢迎大家关注我的公众号,会不定期更新一些开发与测试的一些技术文章. 电脑从前几天开始总是莫名其妙卡顿,打开任务管理器后发现System一直占用很高, 通过下图所示打开占用系统资源的文件位置 发现是nt ...

  3. Windows10 磁盘活动时间百分之百导致系统卡顿解决方法

    最近电脑边的特别慢,打开任务管理器发现是磁盘活动时间时不时的就会变成100%.起初是以为硬盘出问题了,后来网上查了一下才发现很多人都遇到过这个问题,其原因就是Windows的SuperFetch和家庭 ...

  4. android手机两年变卡,安卓手机使用两年以上系统卡顿,这些小技巧帮你解决

    花姐今天给大家带来一些小妙招,解决一些小伙伴们在使用安卓手机的过程中出现了一些问题.这手机近几年的发展是非常的迅速的,所以系统也完善了较前几年的问题.但是安卓手机的系统没有苹果手机系统,弄好这个是毋庸 ...

  5. 系统卡顿故障分析案例

    背景 某系统作为烟草行业服务卷烟零售户的电子商务平台,以烟草产销供应链联盟的网络生态社区形式打造的网站实现了工业.商业.零售客户之间的协同与连接,达到我中有你.你中有我的无障碍沟通. 故障描述 近日, ...

  6. 除了“熊孩子捣乱”,教育直播系统还有什么原因会导致延迟卡顿

    作为直播+教育的产物,教育直播系统是现在比较流行的直播系统之一,钉钉拿下了教育部的圣旨,成为中小学生在线教学的钦点教育直播软件,233网校等老牌教育系统也都不甘示弱,纷纷表示支持中小学生在家上课,停课 ...

  7. 计算机环境安全服务未启动,windows10系统卡在“准备安全选项”如何解决

    最近有windows10系统用户到本站反映说遇到这样一个问题,就是计算机突然卡在"准备安全选项"屏幕上了,导致无法进行任何操作,该怎么办呢,下面小编就给大家讲解一下windows1 ...

  8. android8卡顿,Android 8.0系统曝光,解决了安卓系统卡顿的问题

    原标题:Android 8.0系统曝光,解决了安卓系统卡顿的问题 8.0拟于今年5月17-19日召开的2017年谷歌I/O大会上正式宣布,之前已经曝光了该系统的一些特性,例如开发代号为奥利奥(Oero ...

  9. android卡刷教程,卡刷是什么意思?安卓系统卡刷教程详解

    2016-03-29 17:43:49 卡刷是什么意思?安卓系统卡刷教程详解 标签:卡刷,安卓系统卡刷教程,卡刷升级 [ROM之家]使用安卓系统手机的发烧友可能会经常提到卡刷一词,那么到底卡刷是什么意 ...

最新文章

  1. R语言随机森林回归(randomforest)模型构建
  2. linux 中文乱码博客,linux网页显示乱码终极解决---达到英文全部显示为中文
  3. Android 事件分发 简单学
  4. leetcode算法题--相交链表
  5. 【Linux】25.ubuntu使用 nethogs 监测网络流量情况
  6. popoupwindow 点击背景消失_欺骗13亿人 国产剧的“假房子”什么时候消失?
  7. 2020北京智源大会 图神经网络专题 总结
  8. Spring Cloud 版本支持
  9. 2017面试分享(js面试题记录)
  10. ORM for Net主流框架汇总与效率测试
  11. Ubuntu14.04安装与卸载ROS(避坑教程)配kinetic版本安装官方网址
  12. python颜色填充代码_求懂WORD的大佬怎么一次性填充颜色或者使用python识别
  13. 顺通鞋业鞋厂仓库库存管理系统软件
  14. 微信html5线上卡券,16.7.1HTML5网页领取卡券
  15. 联想IBM ThinkPad 笔记本BIOS设置手册
  16. 带你走进API安全的知识海洋
  17. WoShop跨境电商USDT支付语言插件全开源无加密商城源码
  18. Visual Studio 2019/2017 安装使用教程(快速上手版)
  19. 什么是Saas软件?
  20. 不忘初心,方的始终,初心易得,始终难守,致2019

热门文章

  1. 【uniapp】实现电子围栏:
  2. 实战演练(1-8节课)
  3. C语言-include的含义
  4. 获取日期(阴历,阳历,星期)js
  5. 读书百客:《落叶》赏析
  6. R3300L按reset键无法进入USB Burning模式的问题分析
  7. GPU 状态检测 Burn
  8. win10网络上只能看见小部分电脑
  9. 【STM32H7】第2章 ThreadX USBX协议栈介绍
  10. Javascript手把手编写 猜数字大小游戏 附源码