作者:sxgkwei 来源:http://dwz.cn/tQe4fLeD

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中,会产生大量字符串的方法,使用时,一定得悠着点,别一不小心撑到肚子(字符串池所属的那么点非堆内存空间),撑到肚子了,会死的啊 。

Oh My God!e.printStackTrace() 导致系统卡崩相关推荐

  1. e.printStackTrace() 导致系统卡崩

    e.printStackTrace() 会导致锁死? 这仅仅是打印啊,怎么可能?! 先别惊呼不可能,且听我细细道来. 先看截图1: 注意右下角区域,红框部分.这块内存是什么呢? 非堆!那么,左边是代码 ...

  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. C#访问网络共享文件夹,带用户名密码域,解决电脑重启后访问不到网络文件夹
  2. SAP MM 采购附加费计入物料成本?
  3. html转jsp后空白页,netbeans 运行这个JSP 页面,结果是空白页。.
  4. ICMP:Internet控制报文协议
  5. java枚举返回字符串_Java新特性:数据类型可以扔掉了?
  6. apache wicket_Apache Wicket:记住我的功能
  7. 学习笔记7-C语言-进制转换、原返补、位运算、函数
  8. windows系统ping端口及利用telnet命令Ping 端口
  9. 360手机:360手机刷机 救砖 Twrp、Root、Magisk、360N4S骁龙版、360N5、N5S、N6、N6Lite、N6PRO、N7、N7Lite、N7PRO、Q5、Q5Plus
  10. 波士顿房价预测python决策树_机器学习第二练---波士顿房价预测
  11. qr码生成_在PHP中生成QR码
  12. _WIN32_WINNT not defined
  13. dp交换机命令_DP 交换机
  14. 阿里云OSS远程连接
  15. vb.net画上下左右方向的箭头
  16. 注册商标的这些利与弊你知道吗?
  17. android6.0读写权限要在动态申请权限
  18. 怎么调整照片dpi大小?如何提高图片的dpi分辨率?
  19. 9.19 换钱问题
  20. 支付宝APP支付服务端加签

热门文章

  1. Matlab矩阵函数
  2. python json模块使用详情
  3. python常用异常处理
  4. WEBSERVICE之JDK开发webservice
  5. OpenStack服务组件介绍
  6. js中常用的正则表达式
  7. Unable to execute dex: Multiple dex files define异常的解决办法
  8. IE开发人员工具之实用功能讲解
  9. 打算尝试瑜伽,看是否能解决长期困扰的胃痛问题
  10. 区块链开源实现 hyperledger fabric 概念与原理