java.util.HashMap.containsKey hibernate BUG

服务器上JBOSS上进行压力测试时,经常发现JAVA 的CPU占用99% 用JProfiler查看内存发现很多线程都阻塞在java.util.HashMap.containsKey,具体现象如下:

Thread "CyxHandler 10":
    at java.util.HashMap.containsKey(java.lang.Object)
    at org.apache.commons.collections.SequencedHashMap.containsKey(java.lang.Object)
    at org.apache.commons.collections.LRUMap.put(java.lang.Object, java.lang.Object)
    at org.hibernate.util.SoftLimitMRUCache.put(java.lang.Object, java.lang.Object)
    at org.hibernate.engine.query.QueryPlanCache.getNativeSQLQueryPlan(org.hibernate.engine.query.NativeSQLQuerySpecification)
    at org.hibernate.impl.AbstractSessionImpl.getNativeSQLQueryPlan(org.hibernate.engine.query.NativeSQLQuerySpecification)
    at org.hibernate.impl.AbstractSessionImpl.list(org.hibernate.engine.query.NativeSQLQuerySpecification, org.hibernate.engine.QueryParameters)
    at org.hibernate.impl.SQLQueryImpl.list()
    at org.hibernate.impl.AbstractQueryImpl.uniqueResult()
    at com.ccic.ydcd.hibernate.util.HibernateDAO.executeBatchSqlCD(java.lang.String, java.lang.String, java.lang.String[ ])
    at com.ccic.ydcd.dao.impl.DingShiSendDAOImpl.addDingShiDate(java.util.Map)
    at com.ccic.ydcd.service.impl.DingShiSendServiceImpl.addDingShiDate(java.lang.String)
    at com.ccic.ydcd.socket.socketpool.cyxserver.CyxTransSocketPoolConnectionHandle.handleConnection()
    at com.ccic.ydcd.socket.socketpool.cyxserver.CyxTransSocketPoolConnectionHandle.run()
    at java.lang.Thread.run()

 

经过查看hibernate的SoftLimitMRUCache.java,commons.collection的ReferenceMap.java发现hibernate存在BUG

具体参看

 http://tracelive.net/20091103/303.html   

https://forum.hibernate.org/viewtopic.php?f=1&t=955540&start=0&sid=99670e64b5383741480ae8b5780b9642

请更新hibernate到3.2.1解决此问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值