断点设置不合理引发应用启动慢
问题
java idea应用启动很慢|非常慢|超级慢的问题排查!

解决
关于应用启动超慢这个问题,其实两年前就已经遇到过,https://blog.csdn.net/li396864285/article/details/52944814 当时的解决方案时,把所有断点Mute breakPoints去掉,然后启动就正常了。

排查
如今,再次遇到这个问题,不能再忍了,该问题必须查明详细的原因,反复debug启动多次都是一样的结果,超慢,阻塞在连接zk的地方就不动了,debug窗口出现如下信息:Method breakpoints may dramatically slow down debugging。

分析
果然,断点打在了不该打的地方,当程序启动一直阻塞假死的同时,电脑也卡得不行。于是使用top 命令观察性能和资源消耗情况,启动的java进程一直占用cpu接近100%。

总结
反复试验过后,得出猜测的结论:当我们把断点打在方法上,会导致jvm初始化装载该类的时候,idea加载此时的debug信息(包括线程上下文,变量快照等),从而出现异常情况,一直循环加载debug信息无果,最终出现程序假死,阻塞启动。

断点无论是加在类的方法,还是接口的方法上,都会出现上面的启动慢,程序假死的情况。

另附
附图说明如下:

版权声明:本文为博主原创文章,转载请附上博文链接!

idea debug 启动慢出现假死的更多相关文章

  1. WinForm程序界面假死,寻求完美解决方案

    故事的开端是这样的,小白是一个程序员,他确实也是一个小白,目前还在程序员发展的道路上,兢兢业业的小心求学. 有一天,小白接到一个任务,完成一个Winform程序,附加一个功能就是可以读IC卡. 小白终 ...

  2. 解决android studio 创建新项目后假死

    概况:升级sdk编译api后,创建新的android项目后,在构建过程中假死:原有创建的项目 均运行正常:但是新建的项目只要build,电脑除了鼠标之外的,什么都动不了. 通过一系列的折腾,并重启了N ...

  3. 千万别在UI线程上调用Control.Invoke和Control.BeginInvoke,因为这些是依然阻塞UI线程的,造成界面的假死

    原文地址:https://www.cnblogs.com/wangchuang/archive/2013/02/20/2918858.html .c# Invoke和BeginInvoke 区别 Co ...

  4. vs2017切换设计、拆分假死的解决

    今天安装了vs2017版把vs2015卸载了,原因就是vs2015运行webform后ajaxpro总是会出现time out现象.太难受了,所以决定体验一下新版本. 安装了vs2017后ajaxpr ...

  5. 解决因为终端打印造成的java程序假死

    问题状态: java 程序 日志采用 log4j 运行时由另一个管理进程拉起,程序在后台运行. 现象: 程序后台运行时,运行一段时间后假死 分析原因: 尝试打印输出,定位假死的具体位置,发现出现假死的 ...

  6. C#中异步及winform中界面假死

    c#中可以用BeginInvoke去启动异步调用,但是有两个BeginInvoke一个是controller的BeginInvoke还有一个是委托的BeginInvoke. 主要区别是controll ...

  7. 完美解决windows10磁盘占用100%并出现卡顿、假死无反应

    完美解决windows10磁盘占用100%并出现卡顿.假死无反应 想必大家也跟我一样,自从用win10系统以后经常会出现这种情况:磁盘突然占用100%然后开始出现假死现象,电脑卡住,点击任何软件没反应 ...

  8. MySQL如果频繁的修改一个表的数据,那么这么表会被锁死。造成假死现象。

    MySQL如果频繁的修改一个表的数据,那么这么表会被锁死.造成假死现象. 比如用Navicat等连接工具操作,Navicat会直接未响应,只能强制关闭软件,但是重启后依然无效. 解决办法: 首先执行: ...

  9. FTPClient下载文件,程序假死问题

    [所属类包] org.apache.commons.net.ftp.FTPClient [现象描述] 这两天java项目中用到了FTP下载,像之前的项目写好代码,但是点击下载后,程序调试到下面这一行, ...

随机推荐

  1. sqlserver中xml查询

    DECLARE @DOC XML =' <books> <book category="C#">    <title language="e ...

  2. flume 转

    http://blog.csdn.net/xiao_jun_0820/article/details/38111305

  3. 86. Partition List (List)

    Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...

  4. linux 安装天气插件

    1. 用命令 sudo apt install gnome-shell-extension-weather 安装插件 但是在那之前你安装了 GNOME Shell Extensions 如果没有安装 ...

  5. 少一些套路,多一些真诚 ——groovy消灭表现层套路

      初次认识groovy是在2009年,当时看了Manning出版的<Groovy in Action 1st Edition>,对groovy这个语言的交互性shell,以及灵活的语法留 ...

  6. 洛谷 P3092 [USACO13NOV]没有找零No Change

    题目描述 Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 ...

  7. C++获取字符串长度数

    strlen,获取到的是字节数,中文占两个字节. 如何获取字符数,无论中文英文,标点符号,都按一个字符计算呢?这里提供其中的一个方法.那就是通过MultiByteToWideChar函数,将CStri ...

  8. Java Persistence with MyBatis 3(中文版) 第五章 与Spring集成

    MyBatis-Spring是MyBatis框架的子模块,用来提供与当前流行的依赖注入框架Spring的无缝集成. Spring框架是一个基于依赖注入(Dependency Injection)和面向 ...

  9. mysql存储过程和触发器

    mysql编程(存储过程和触发器) 存储过程 什么是存储过程 存储过程,带有逻辑的sql语句 存储过程特点 执行效率非常快!存储过程是在数据库的服务器端执行的!!! 移植性很差!不同数据库的存储过程是 ...

  10. 【转载】MySQL常用系统表大全

    转载地址:http://blog.csdn.net/xlxxcc/article/details/51754524 MySQL5.7 默认的模式有:information_schema, 具有 61个 ...