首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JRockit卡住了

JRockit卡住了
EN

Stack Overflow用户
提问于 2013-01-26 04:27:12
回答 2查看 3.7K关注 0票数 1

我们一直在使用这个堆栈时遇到了JRockit jvm的问题:

代码语言:javascript
复制
"[STUCK] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'" id=45 idx=0x94 tid=9944 prio=1 alive, in native, daemon
    at jrockit/vm/Allocator.nativeGetNewTLA()V(Native Method)
    at jrockit/vm/Allocator.getNewTLA(Allocator.java:788)[optimized]
    at jrockit/vm/Allocator.allocLargerThanFreeTLA(Allocator.java:816)[inlined]
    at jrockit/vm/Allocator.allocSlowCaseInner(Allocator.java:930)[inlined]
    at jrockit/vm/Allocator.allocSlowCase(Allocator.java:776)[optimized]
    at oracle/jdbc/driver/T4CMAREngine.unmarshalCLRforREFS(T4CMAREngine.java:2024)[optimized]
    at oracle/jdbc/driver/T4CTTIoer.unmarshal(T4CTTIoer.java:160)[optimized]
    at oracle/jdbc/driver/T4C8Oall.receive(T4C8Oall.java:727)[optimized]
    at oracle/jdbc/driver/T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)[inlined]
    at oracle/jdbc/driver/T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)[optimized]
    at oracle/jdbc/driver/OracleStatement.executeMaybeDescribe(OracleStatement.java:1060)[optimized]
    at oracle/jdbc/driver/T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)[optimized]
    at oracle/jdbc/driver/OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)[optimized]
    at oracle/jdbc/driver/OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)[optimized]
    at oracle/jdbc/driver/OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)[optimized]
    ^-- Holding lock: oracle/jdbc/driver/T4CPreparedStatement@0x1d8f8268[thin lock]
    ^-- Holding lock: oracle/jdbc/driver/T4CConnection@0x14d68fd8[thin lock]
    at weblogic/jdbc/wrapper/PreparedStatement.executeQuery(PreparedStatement.java:97)[optimized]

它似乎在尝试分配内存时卡住了。根据我们的监控工具,堆使用率在14%左右,在服务器卡住之前不到20%。

这是java版本:

代码语言:javascript
复制
java version "1.5.0_14"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
BEA JRockit(R) (build R27.5.0-110_o-99226-1.5.0_14-20080528-1505-linux-x86_64, compiled mode)

这些是我们正在使用的JVM设置

代码语言:javascript
复制
-Xms256m -Xmx3072m -Xverify:none 

你知道是什么导致了这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 21:57:23

在尝试分配额外的TLA (线程局部区域)空间时,它似乎被卡住了。线程局部区域(TLA)是在堆或托儿所上保留的空闲空间块,并提供给线程以供其独占使用。线程可以在自己的TLA中分配小对象,而无需与其他线程同步。当TLA变满时,线程只是请求一个新的TLA。线程被卡住是因为jrockit无法分配内存。

从堆栈跟踪来看,当您从数据库读取数据时会发生这种情况,因此这可能意味着没有足够的TLA空间用于读取对象。该查询是否从数据库中读取了大量记录?

您可以尝试通过tuning the TLA size解决此问题

票数 3
EN

Stack Overflow用户

发布于 2013-01-28 00:33:37

这个问题很可能与一个DB操作有关:Holding lock: oracle/jdbc/driver/T4CPreparedStatement@0x1d8f8268[thin lock]

当您的服务器遇到上述问题时,您是否检查过数据库操作是否正在执行?

您可以检查以下内容:

  • Long running Query
  • 与DB服务器相关的问题导致DB响应缓慢尝试从DB

加载大块数据的

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

https://stackoverflow.com/questions/14529848

复制
相关文章

相似问题

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