作者: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. 【Scala-spark.mlib】本地矩阵乘法计算效率比较(稠密稀疏哪家强?)
  2. Linux sar性能分析
  3. jdbc如果不关闭连接_JDBC基础整理
  4. 网络爬虫框架Webmagic
  5. JUnit中的参数化测试运行器
  6. php判断字符串中是否包含某字符串
  7. python中func函数用法_python之4类回调函数的使用方法
  8. Qt之系统托盘(QSystemTrayIcon详解)
  9. 我面试几乎必问:你设计索引的原则是什么?怎么避免索引失效?
  10. 计算机乘法函数公式word,Word表格怎么用公式乘法
  11. ORA-00932:数据类型不一致:应为NUMBER,但却获得CHAR
  12. 计算机英语rom是什么意思,涨姿势!电脑里的rom,ram是什么意思?
  13. dh模型表matlab,建立DH模型的三种方法以及区别
  14. 导致Android手机崩溃的壁纸,一张壁纸导致安卓手机崩溃作者首发声:绝非故意...
  15. 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?
  16. SAP中采购订单历史分类标识与实际业务描述
  17. 从移动激光扫描数据中自动提取单棵树的双重生长方法
  18. c语言函数名大全dfun,C语言函数题库以及答案.docx
  19. 常见遥感卫星参数介绍nbsp;(转)
  20. 18.(地图工具篇)PostgreSQL实现shape数据转geojson数据

热门文章

  1. 用VuePress来搭建一个极简的静态网站
  2. PHP 数组函数分类和整理
  3. bootstrap模态框使用
  4. 创建Unicode格式的INI文件
  5. python入门基础教程02 Python简介
  6. Foundation HTML5 Canvas中的2处错误
  7. sql2005收集作业相关历史记录
  8. IBM MQ 使用一例
  9. 在Windows下使用webpack入门
  10. mp4box 封装H265码流