【重金感谢!】JAVA模块CPU过高,郁闷的是一直无法收集堆栈,求助!!!

lixinxingjava 2012-06-06 10:58:43
系统为SUSE10,有8个CPU,其中一个JAVA模块CPU过高,导致其中一个CPU的内存占用总是接近100%,现在要分析此模块CPU为什么这么高,但是一直没法收集堆栈,

正常的 kill -3 pid,以及jstack,pstack,jmap,等都试了,都没有用,gstack有屏幕输出,但此堆栈太简洁,没法分析,最好能是kill -3 的输出。

有没有哪位兄弟姐妹碰到此类问题?堆栈都收集不到,没法定位问题啊!

谢谢!
...全文
328 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixinxingjava 2012-06-07
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 banquet 的回复:]
LZ 为什么不去分析一下SOURCE
[/Quote]
有什么建议吗?现在没有堆栈没法分析源码啊,是一个模块的问题,源码太多,得先看到堆栈把范围缩小才行。。
谢谢!
古布 2012-06-07
  • 打赏
  • 举报
回复
LZ 为什么不去分析一下SOURCE
lixinxingjava 2012-06-07
  • 打赏
  • 举报
回复
绝望的顶起!!!!
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
没人吗?自己顶一个!!
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 的回复:]
jstack 怎么可能搜集不到呢?
[/Quote]
谢谢.
jstack 命令不能识别,用gstack pid 有屏幕输出,但是都是一些线程的简单状态,看不到代码层次的堆栈信息

,如果能像KILL -3 那样产生堆栈就好了!
  • 打赏
  • 举报
回复
jstack 怎么可能搜集不到呢?
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
不能沉啊!再顶!!!
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
急啊!!自己再顶!!
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
不能装个jdk 5/6? 起码,你们可以搭一个jdk6的测试环境吧.
[/Quote]

是这样的,现在在维护一个比较老的系统,用的是1.4的,还在国外跑着,在家里有相同的环境,家里KILL -3 是可以收集的,但是现场就是不行。。
想喝咖啡的貓 2012-06-06
  • 打赏
  • 举报
回复
不能装个jdk 5/6? 起码,你们可以搭一个jdk6的测试环境吧.
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]
引用 14 楼 的回复:
不好意思,说错了!
应该是:其中一个CPU的占用总是接近100%,暂时和内存没关系。
谢谢!

o~这样啊,我们以前也出过这个问题,后来发现是一个线程很忙(它在不停的连多台机器),你们的情况应该也类似,就是某一个线程非常忙.
[/Quote]
是啊,CPU过高的原因大概就是那几种,但是现在的问题是JDK1.4根本收集不到堆栈啊
继续顶!
想喝咖啡的貓 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
不好意思,说错了!
应该是:其中一个CPU的占用总是接近100%,暂时和内存没关系。
谢谢!
[/Quote]
o~这样啊,我们以前也出过这个问题,后来发现是一个线程很忙(它在不停的连多台机器),你们的情况应该也类似,就是某一个线程非常忙.
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
其中一个CPU的内存占用总是接近100%

这句是什么意思? CPU和内存有什么关系?
[/Quote]

不好意思,说错了!
应该是:其中一个CPU的占用总是接近100%,暂时和内存没关系。
谢谢!
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 8 楼 的回复:
刚用这两个命令都试过了,都是Command not found 啊。。


Sun的JDK1.6才有(注意不是JRE),在bin目录下。
[/Quote]
java version 是1.4.2_08,太老了。。
想喝咖啡的貓 2012-06-06
  • 打赏
  • 举报
回复
其中一个CPU的内存占用总是接近100%

这句是什么意思? CPU和内存有什么关系?
MiceRice 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
刚用这两个命令都试过了,都是Command not found 啊。。
[/Quote]

Sun的JDK1.6才有(注意不是JRE),在bin目录下。
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
再顶下!
有没有其它收集JAVA堆栈的命令?OS:SUSE10
谢谢!
lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
引用 5 楼 的回复:
不一定是堆栈占用内存大导致CPU 100%。
个人觉得cpu占用100%大部分原因不是JVM内存溢出了,还是程序的问题,有可能在哪个地方死锁了,或循环没有正常结束。

咦?看错了,原来你说的是内存占用100,不是cpu哦?
那还得监测下JVM的内存使用情况,看哪些对象没有被GC及时回收,而且占用内存很大的。
工具不好用,写程序吧,看下java.lang.mana……
[/Quote]
恩,是JAVA模块CPU过高,个人也觉得是有可能在哪个地方死锁了,或循环没有正常结束。
但现在的问题是没法收集到堆栈..


lixinxingjava 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
jconsole 或者jvisualvm试试

内存占用总是接近100%,肯定是代码的问题,重点分析一下循环中new 对象或者拼接String的地方。
[/Quote]
刚用这两个命令都试过了,都是Command not found 啊。。
brightyq 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
不一定是堆栈占用内存大导致CPU 100%。
个人觉得cpu占用100%大部分原因不是JVM内存溢出了,还是程序的问题,有可能在哪个地方死锁了,或循环没有正常结束。
[/Quote]
咦?看错了,原来你说的是内存占用100,不是cpu哦?
那还得监测下JVM的内存使用情况,看哪些对象没有被GC及时回收,而且占用内存很大的。
工具不好用,写程序吧,看下java.lang.management这个包。
加载更多回复(4)

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧