Oh My God!e.printStackTrace() 导致系统卡崩
作者: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() 导致系统卡崩相关推荐
- e.printStackTrace() 导致系统卡崩
e.printStackTrace() 会导致锁死? 这仅仅是打印啊,怎么可能?! 先别惊呼不可能,且听我细细道来. 先看截图1: 注意右下角区域,红框部分.这块内存是什么呢? 非堆!那么,左边是代码 ...
- Windows10磁盘占用率100%(ntoskrnl占用资源)导致系统卡顿
欢迎大家关注我的公众号,会不定期更新一些开发与测试的一些技术文章. 电脑从前几天开始总是莫名其妙卡顿,打开任务管理器后发现System一直占用很高, 通过下图所示打开占用系统资源的文件位置 发现是nt ...
- Windows10 磁盘活动时间百分之百导致系统卡顿解决方法
最近电脑边的特别慢,打开任务管理器发现是磁盘活动时间时不时的就会变成100%.起初是以为硬盘出问题了,后来网上查了一下才发现很多人都遇到过这个问题,其原因就是Windows的SuperFetch和家庭 ...
- android手机两年变卡,安卓手机使用两年以上系统卡顿,这些小技巧帮你解决
花姐今天给大家带来一些小妙招,解决一些小伙伴们在使用安卓手机的过程中出现了一些问题.这手机近几年的发展是非常的迅速的,所以系统也完善了较前几年的问题.但是安卓手机的系统没有苹果手机系统,弄好这个是毋庸 ...
- 系统卡顿故障分析案例
背景 某系统作为烟草行业服务卷烟零售户的电子商务平台,以烟草产销供应链联盟的网络生态社区形式打造的网站实现了工业.商业.零售客户之间的协同与连接,达到我中有你.你中有我的无障碍沟通. 故障描述 近日, ...
- 除了“熊孩子捣乱”,教育直播系统还有什么原因会导致延迟卡顿
作为直播+教育的产物,教育直播系统是现在比较流行的直播系统之一,钉钉拿下了教育部的圣旨,成为中小学生在线教学的钦点教育直播软件,233网校等老牌教育系统也都不甘示弱,纷纷表示支持中小学生在家上课,停课 ...
- 计算机环境安全服务未启动,windows10系统卡在“准备安全选项”如何解决
最近有windows10系统用户到本站反映说遇到这样一个问题,就是计算机突然卡在"准备安全选项"屏幕上了,导致无法进行任何操作,该怎么办呢,下面小编就给大家讲解一下windows1 ...
- android8卡顿,Android 8.0系统曝光,解决了安卓系统卡顿的问题
原标题:Android 8.0系统曝光,解决了安卓系统卡顿的问题 8.0拟于今年5月17-19日召开的2017年谷歌I/O大会上正式宣布,之前已经曝光了该系统的一些特性,例如开发代号为奥利奥(Oero ...
- android卡刷教程,卡刷是什么意思?安卓系统卡刷教程详解
2016-03-29 17:43:49 卡刷是什么意思?安卓系统卡刷教程详解 标签:卡刷,安卓系统卡刷教程,卡刷升级 [ROM之家]使用安卓系统手机的发烧友可能会经常提到卡刷一词,那么到底卡刷是什么意 ...
最新文章
- 【Scala-spark.mlib】本地矩阵乘法计算效率比较(稠密稀疏哪家强?)
- Linux sar性能分析
- jdbc如果不关闭连接_JDBC基础整理
- 网络爬虫框架Webmagic
- JUnit中的参数化测试运行器
- php判断字符串中是否包含某字符串
- python中func函数用法_python之4类回调函数的使用方法
- Qt之系统托盘(QSystemTrayIcon详解)
- 我面试几乎必问:你设计索引的原则是什么?怎么避免索引失效?
- 计算机乘法函数公式word,Word表格怎么用公式乘法
- ORA-00932:数据类型不一致:应为NUMBER,但却获得CHAR
- 计算机英语rom是什么意思,涨姿势!电脑里的rom,ram是什么意思?
- dh模型表matlab,建立DH模型的三种方法以及区别
- 导致Android手机崩溃的壁纸,一张壁纸导致安卓手机崩溃作者首发声:绝非故意...
- 给定两个数组arrx和arry,长度都为N。代表二维平面上有N个点,第i个点的x 坐标和y坐标分别为arrx[i]和arry[i],返回求一条直线最多能穿过多少个点?
- SAP中采购订单历史分类标识与实际业务描述
- 从移动激光扫描数据中自动提取单棵树的双重生长方法
- c语言函数名大全dfun,C语言函数题库以及答案.docx
- 常见遥感卫星参数介绍nbsp;(转)
- 18.(地图工具篇)PostgreSQL实现shape数据转geojson数据