首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >完全锁定Java进程

完全锁定Java进程
EN

Stack Overflow用户
提问于 2012-04-03 19:42:54
回答 4查看 762关注 0票数 3

这一点令人费解。突然之间,我们开始经历这样一种情况: Java进程中的所有线程都达到阻塞状态,并且该进程被完全冻结。没有jvm.log或hs*.log文件可以指向正在发生的事情。

jstack转储列出了许多线程,所有线程都处于阻塞状态,其中一些线程像下面这样令人费解:

代码语言:javascript
复制
Thread 14766: (state = BLOCKED)
- java.lang.String.substring(int, int) @bci=62, line=1939 (Compiled frame)
- java.util.Formatter.parse(java.lang.String) @bci=73, line=2469 (Compiled frame)
- java.util.Formatter.format(java.util.Locale, java.lang.String, java.lang.Object[]) @bci=213, line=2438 (Compiled frame)
- java.util.Formatter.format(java.lang.String, java.lang.Object[]) @bci=7, line=2367 (Compiled frame)
- java.lang.String.format(java.lang.String, java.lang.Object[]) @bci=9, line=2769 (Compiled frame)

(其余部分被裁剪)

或者这样:

代码语言:javascript
复制
Thread 14794: (state = BLOCKED)
- java.lang.Throwable.toString() @bci=17, line=344 (Interpreted frame)
- java.lang.String.valueOf(java.lang.Object) @bci=10, line=2826 (Compiled frame)
- java.io.PrintWriter.println(java.lang.Object) @bci=1, line=710 (Interpreted frame)
- java.lang.Throwable.printStackTrace(java.io.PrintWriter) @bci=6, line=509 (Compiled frame)
- org.apache.log4j.DefaultThrowableRenderer.render(java.lang.Throwable) @bci=19, line=60 (Compiled frame)
- org.apache.log4j.spi.ThrowableInformation.getThrowableStrRep() @bci=50, line=87 (Interpreted frame)
- org.apache.log4j.spi.LoggingEvent.getThrowableStrRep() @bci=13, line=413 (Compiled frame)
- org.apache.log4j.WriterAppender.subAppend(org.apache.log4j.spi.LoggingEvent) @bci=26, line=313 (Compiled frame)
- org.apache.log4j.RollingFileAppender.subAppend(org.apache.log4j.spi.LoggingEvent) @bci=2, line=276 (Interpreted frame)
- org.apache.log4j.WriterAppender.append(org.apache.log4j.spi.LoggingEvent) @bci=10, line=162 (Compiled frame)
- org.apache.log4j.AppenderSkeleton.doAppend(org.apache.log4j.spi.LoggingEvent) @bci=106, line=251 (Compiled frame)
- org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(org.apache.log4j.spi.LoggingEvent) @bci=41, line=66 (Compiled frame)
- org.apache.log4j.Category.callAppenders(org.apache.log4j.spi.LoggingEvent) @bci=26, line=206 (Compiled frame)
- org.apache.log4j.Category.forcedLog(java.lang.String, org.apache.log4j.Priority, java.lang.Object, java.lang.Throwable) @bci=14, line=391 (Interpreted frame)
- org.apache.log4j.Category.error(java.lang.Object, java.lang.Throwable) @bci=37, line=322 (Interpreted frame)

(其余部分被裁剪)

我必须承认,虽然我试图在网上搜索一个原因,但我不知道从哪里开始寻找它。

这是在jdk1.6.0_31下发生的

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-03 20:08:59

它们在字符串操作中都被阻塞了吗?您是否耗尽了堆perm gen空间(在挂起的进程上执行'jstat -gc‘)

票数 3
EN

Stack Overflow用户

发布于 2012-04-03 19:58:15

操作系统是什么?多线程问题很多时候都依赖于操作系统,因为它们的实现是特定于操作系统的。Java线程只是OS线程的抽象。

/Koya

票数 0
EN

Stack Overflow用户

发布于 2012-04-03 20:37:35

我会用-verbosegc运行这个程序。它似乎在等待一些空闲空间时被阻塞。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9992534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档