症状:

使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jdk1.6.u45及1.7u45均尝试了,也重现。

重现步骤很简单,使用debug模式启动时较容易出来,debug启动tomcat,(我的是webapp)然后在页面上随便点点即发现eclipse僵死,且任何从浏览器发出的请求都卡住不能被接收执行。

1、然后从任务管理器直接杀掉eclipse对应的javaw进程(有些可能是eclipse进程,根据指定的vm而定--eclipse.ini中 -vm指定)后,tomcat恢复正常,一切都正常了。

2、等待很久,真的很久,它自己又正常了,但过一会,又是这样。如果没事且有耐心的话,再等很久又会正常的?

排查步骤:

1、怀疑是eclipse或tomcat内存问题,于是乎jstat gc 查看发现一切正常。

2、从任务管理器查看tomcat 对应的java进程资源占用正常。

3、从任务管理器查看eclipse对应java进程,cpu占用 25%且持续很长时间。因为我是4核,所以实际已经占满了一个CPU资源了,这说明eclipse遇到了麻烦的问题。

4、使用Process Explorer 工具查看这个java进程中线程情况,发现有1个线程几乎占用了 这个进程绝大部分CPU资源(有时可能是两个线程),这个线程几乎是死循环了。

5、使用jstack连续对eclipse对应的java进程做threaddump,然后将Process
Explorer中看到的进程ID做16进制转换,到ThreadDump中加上0x
前缀即能找到对应线程。通过这里,也就基本定位到问题的出处了。例如我的 TID:1372,转为16进制是55C,加上0x前缀则是 0x55c。

  1. "Worker-10" prio=6 tid=0x0000000008d30800 nid=0x55c runnable [0x000000000d3cf000]
  2. java.lang.Thread.State: RUNNABLE
  3. at java.util.regex.Pattern$CharProperty.match(Pattern.java:3345)
  4. at java.util.regex.Pattern$Curly.match0(Pattern.java:3770)
  5. at java.util.regex.Pattern$Curly.match(Pattern.java:3744)
  6. at java.util.regex.Pattern$Start.match(Pattern.java:3055)
  7. at java.util.regex.Matcher.search(Matcher.java:1105)
  8. at java.util.regex.Matcher.find(Matcher.java:561)
  9. at org.eclipse.ui.internal.console.ConsolePatternMatcher$MatchJob.run(ConsolePatternMatcher.java:130)
  10. at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)

而且通过数次重现,均是

  1. at org.eclipse.ui.internal.console.ConsolePatternMatcher$MatchJob.run(ConsolePatternMatcher.java:130)

这个从名称就能看出与console有关了。eclipse官方也报过类似bug,是在07年和11年报的,理论上早修复了。

6、差不多已经定位了,于是就从console下手了。

观察console,发现我们的框架竟然把所有给浏览器的请求和响应都输出了,因为有个请求将会返回 200K左右的数据,相当于在Console中一次直接输出了200K的日志而且是没换行的,所以一开始我也没注意到。

回过头看我Console配置,最大字符数是80000≈78K,我一条日志就远超出Console默认的展示量了。

7、接下来就开始解决问题

7.1)将Console字符限制取消,即无限制。这个日志多且程序要在Eclipse中跑很久不现实,但我这么设置后实际就正常了,没有再出现
eclipse僵死的情况。然后我手贱的点了下Console窗口上的“Clear Console”操作,Eclipse又僵死了。

7.2)因为实际那个日志输出对我开发意义不大,是INFO级别的,有点类似访问日志。于是乎将其对应的LOG Append级别设置为WARN,不输出这个日志了,一切就回归正常了。

Note:

windows版的eclipse的console限制了一行最大长度,

解决方法:
Right click on
in console -> Preferences... -> check Fixed width console. Now you
have auto word wrap and everything shows ok. Seems like Eclipse console
have a limit on number of characters displayed in one line.

eclipse 僵死/假死 问题排查及解决的更多相关文章

  1. console引起的eclipse 僵死/假死 问题排查及解决[转]

    原文链接:http://www.iteye.com/topic/1133941 症状: 使用Eclipse win 64位版本,indigo及kepler都重现了,使用tomcat 6.0.39,jd ...

  2. WinForm查询大数据界面假死,使用异步调用解决

    用DataGridView无分页绑定一个几千条数据的查询,查询的时候界面直接卡死十几秒,用户体验非常不好,因此用异步操作解决界面卡死的问题原本场景:点击[查询]后,界面直接卡死优化场景:点击[查询]后 ...

  3. C# Winform 窗体界面”假死”后台线程阻塞 解决办法–BeginInvoke

    原文:C# Winform 窗体界面"假死"后台线程阻塞 解决办法–BeginInvoke 这个方法可以用在任何后台任务耗时较长,造成界面“假死”界面控件不更新的情况. 比如要要执 ...

  4. dedecms 安装后 管理后台ie假死 无响应的解决方法

    在网站后台(我的是dede)uploads/emplets/index_body.htm中找到并注释掉以下代码: <script type=”text/javascript”>functi ...

  5. Zookeeper已经分布式环境中的假死脑裂

    Zookeeper简介 在上班之前都不知道有这样一个东西,在开始说假死脑裂之前先说说Zookeeper吧. Zookeeper zookeeper是一个分布式应用程序的协调服务.它是一个为分布式应用提 ...

  6. 记一次生产事故的排查与优化——Java服务假死

    一.现象 在服务器上通过curl命令调用一个Java服务的查询接口,半天没有任何响应.关于该服务的基本功能如下: 1.该服务是一个后台刷新指示器的服务,即该服务会将用户需要的指示器数据提前计算好,放入 ...

  7. 解决Windows 8系统假死的方法

    大部分半卡死的现象是因为Dynamic Tick的一个Bug.Dynamic Tick是NT 6.2内核的一个新功能(其实Linux早就有了),原理的话大概是在空闲的时候把CPU完全暂停,来节省电量. ...

  8. IIS7.5解决应用程序池回收假死问题

    使用windows server 2008 r2解决回收假死的问题. 具体做法是: 打开应用程序池 -> 高级设置 ->在“禁止重叠回收”里选择“true”,这样就有效避免了应用程序池回收 ...

  9. 解决xcode打开时loading假死的问题

    症状如下: 点击打开xcode后,就一直会看到loading,但是CPU消耗很高,基本上就是死了(动弹不得),通过活动监测器看到xcode显示为“未响应” 以为是安装程序的问题,结果选中xcode拉到 ...

随机推荐

  1. GD库使用小结---1

    因为一开始,“大家”都说一般任务中,用php操作图片不常见,像我们这种基本业务型的,就更用不到了,所以先别看,偶就没有看.现在有机会了自然要来玩一把. 以前学过C#的GDI+,交了课程设计后忘得一干二 ...

  2. C++函数学习笔记

    C++继承了C语言的全部语法,也包括函数的定义和使用方法. 调用其他函数的函数因为位高权重被尊称为主调函数,被其他函数调用的函数称为被调函数. 函数的返回值由return语句给出,return 表达式 ...

  3. Redis 命令 - Sorted Sets

    ZADD key score member [score member ...] Add one or more members to a sorted set, or update its scor ...

  4. 数据库SQL优化大总结之百万级数据库优化方案

    网上关于SQL优化的教程很多,但是比较杂乱.近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充. 这篇文章我花费了大量的时间查找资料.修改.排版,希望大家阅读之后,感觉 ...

  5. JAVA之经典Student问题1

    通过“三目运算符”求最大值与最小值. class student { //定义学生编号 private String stu; //学生姓名 private String name; //学生书信成绩 ...

  6. sql查询统计,根据新闻类别ID统计,没有数据显示0

    有两张表,新闻信息表MessageInfo和新闻类别表MessageType.表结构如下: 然后需要实现下面这种查询结果: 这个是我面试时遇到的,上面的新闻类型是乱写的.当时没有做出来,然后回来又研究 ...

  7. 实现iOS项目一款用swift实现的应用top源码

    Top 后台 Swift版本Ios 8 / iPhone 5S适配这边有个登陆,如果你们想测试的话,可以用这个账号, 账号:18868879362 密码:420562   源码下载: http://c ...

  8. 分享:在微信公众平台做HTML5游戏经验谈(转载与http://software.intel.com/zh-cn/blogs/2013/04/03/html5)

    分享:在微信公众平台做HTML5游戏经验谈 Dawei Cheng 程大伟... 于 星期三, 03/04/2013 - 03:19 提交 最近微信公众游戏平台讨论得如火如荼,大有HTML5游戏即将引 ...

  9. OpenGL5-纹理贴图

    代码下载 #include "CELLWinApp.hpp"#include <gl/GLU.h>#include <assert.h>#include & ...

  10. Git的安装以及一些操作

    1.安装Git-2.5.1-64-bit.exe  一直下一步直至完成 2.注册github账号 官网地址:https://github.com/github 3.找到一个按钮“New Reposit ...