e.printStackTrace() 导致系统卡崩
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() 导致系统卡崩相关推荐
- Oh My God!e.printStackTrace() 导致系统卡崩
作者:sxgkwei 来源:http://dwz.cn/tQe4fLeD e.printStackTrace() 会导致锁死? 这仅仅是打印啊,怎么可能?! 先别惊呼不可能,且听我细细道来. 先看截图 ...
- 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之家]使用安卓系统手机的发烧友可能会经常提到卡刷一词,那么到底卡刷是什么意 ...
最新文章
- R语言随机森林回归(randomforest)模型构建
- linux 中文乱码博客,linux网页显示乱码终极解决---达到英文全部显示为中文
- Android 事件分发 简单学
- leetcode算法题--相交链表
- 【Linux】25.ubuntu使用 nethogs 监测网络流量情况
- popoupwindow 点击背景消失_欺骗13亿人 国产剧的“假房子”什么时候消失?
- 2020北京智源大会 图神经网络专题 总结
- Spring Cloud 版本支持
- 2017面试分享(js面试题记录)
- ORM for Net主流框架汇总与效率测试
- Ubuntu14.04安装与卸载ROS(避坑教程)配kinetic版本安装官方网址
- python颜色填充代码_求懂WORD的大佬怎么一次性填充颜色或者使用python识别
- 顺通鞋业鞋厂仓库库存管理系统软件
- 微信html5线上卡券,16.7.1HTML5网页领取卡券
- 联想IBM ThinkPad 笔记本BIOS设置手册
- 带你走进API安全的知识海洋
- WoShop跨境电商USDT支付语言插件全开源无加密商城源码
- Visual Studio 2019/2017 安装使用教程(快速上手版)
- 什么是Saas软件?
- 不忘初心,方的始终,初心易得,始终难守,致2019