首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >似乎普罗克索导致了一个死循环

似乎普罗克索导致了一个死循环
EN

Stack Overflow用户
提问于 2017-02-15 13:31:07
回答 1查看 58关注 0票数 0

今天我有了一个应用程序,它几乎使用了100%的CPU资源。我做了一些线转储。认定:

代码语言:javascript
复制
"resin-port-8080-284" daemon prio=10 tid=0x00002ad370261000 nid=0x79c5 runnable [0x00002ad30b32d000]
    java.lang.Thread.State: RUNNABLE
    at java.util.HashMap.getEntry(HashMap.java:465)
    at java.util.HashMap.get(HashMap.java:417)
    at org.logicalcobwebs.proxool.proxy.InvokerFacade.getConcreteMethod(InvokerFacade.java:38)
    at org.logicalcobwebs.proxool.WrappedConnection.invoke(WrappedConnection.java:111)
    at org.logicalcobwebs.proxool.WrappedConnection.intercept(WrappedConnection.java:87)
    at $java.lang.AutoCloseable$$EnhancerByProxool$$66bad385.getWarnings(<generated>)
    at org.hibernate.util.JDBCExceptionReporter.logAndClearWarnings(JDBCExceptionReporter.java:45)
    at org.hibernate.jdbc.ConnectionManager.closeConnection(ConnectionManager.java:472)
    at org.hibernate.jdbc.ConnectionManager.cleanup(ConnectionManager.java:408)
    at org.hibernate.jdbc.ConnectionManager.close(ConnectionManager.java:347)
    at org.hibernate.impl.SessionImpl.close(SessionImpl.java:335)

HashMap中的链接列表应该有一个循环链,因此CPU继续运行并消耗所有资源。

Proxool版本为0.9.0RC3,Java为1.7。

所以我不知道为什么会发生这种事?大多数情况下,应用程序是正常的。从源代码来看,相关的Proxool类似乎是线程安全的。

是Proxool的虫子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-15 13:36:24

InvokerFacade类有一个静态HashMap并在不同步的情况下对其进行变异。

HashMap 文档明确指出:

如果多个线程同时访问散列映射,并且至少有一个线程在结构上修改映射,则必须在外部同步它。

这是一个缺陷,并可能导致各种奇怪的行为,包括你在这里观察。

解释导致HashMap.put()执行无限循环的时间

java.util.HashMap中的无限循环

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

https://stackoverflow.com/questions/42250797

复制
相关文章

相似问题

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