解决方案 »
- 求助:hibernate持久化问题identifier of an instance of
- web应用中乱码问题
- java.lang.OutOfMemoryError: PermGen space
- 求救。。。
- 求解,关于spring配置问题
- 新来的报个到~希望能和各位较个朋友,问问J2EE问题~
- SPRING中的接口调用方法不懂
- 从Sun下载的j2ee 1.4安装完后,目录中Sun\AppServer下那个目录才是j2ee sdk的目录?
- Struts中的一个难题,高手请进!!!
- 高分求救!一个类似XML的文件格式的读取问题....
- 问题标签用户 急 处理大量数据 查找出重复的并去重(去重的导入另一张表中)
- get和post提交
阻塞总数 和 等待总数 的确很多,是不是指这个呢?
名称: com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2
状态:TIMED_WAITING 在 com.mchange.v2.async.ThreadPoolAsynchronousRunner@84bb67 上
阻塞总数:647 等待总数: 1,367这个都是C3PO的情况造成的阻塞,我的基础DAO层
@Override
public List<T> listAll() {
log.debug("listAll " + this.entityClass + " instance");
return getSession().createQuery(
"from " + getEntityName(entityClass) + " as model ").list();
}
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
进行控制 的,怎么会造成数据库未释放呢?
jconsole里的 阻塞总数 和 等待总数 的数字跟阻塞没有关系吧?
因为我操作了一会儿程序,发现jvisualvm的Thread Dump里面"com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2" daemon prio=6 tid=0x1fd7b400 nid=0x169c in Object.wait() [0x215ef000..0x215efb94]
java.lang.Thread.State: TIMED_WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x08b39990> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:534)
- locked <0x08b39990> (a com.mchange.v2.async.ThreadPoolAsynchronousRunner) Locked ownable synchronizers:
- None随便复制了一个,未发现
java.lang.Thread.State: BLOCK 状态的,
还有觉的 jconsole里的 (已启动的线程总数: 64)=( 活动线程: 41) + (已完成的线程数)
就像上面假死一样,线程数只有41个,并没有大量的线程产生!
下面的图用jconsole 查看的线程状态这帖子好冷清呀!各位看客大侠,麻烦你们给点意见和看法,即使解决不了,我相信通过大家的讨论也能学习到很多知识的!
"from " + getEntityName(entityClass) + " as model ").list();这里,你应该是没有关闭session。最后就会导致这个结果。 public List findByPage(Page page) {
Session session = getSession(true);
Criteria cri = session.createCriteria(page.getListClass());
List<Criterion> criterions = page.getParam();
if(criterions != null){
for (int i = 0; i < criterions.size(); i++) {
cri.add(criterions.get(i));
}
}
if(page.getOrder() != null){
cri.addOrder(page.getOrder());
}
if(page.getStart()!=0){
cri.setFirstResult((page.getStart()-1)*page.getLimit());
cri.setMaxResults(page.getLimit());
}
List list = null;
try{
list = cri.list();
}catch(Exception e){
}
session.clear();
session.close();
return list;
}这是我程序里的公用查询的代码,用的QBC,其实类似于你那个查询,不过也得获取到session,然后查询,最后关闭session啊。
<filter>
<filter-name>openSessionInView</filter-name>
<filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>openSessionInView</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>我在整合hibernate4的时候发现这个配置完全没有用!至今不知道为什么,我觉得最有可能的就是这里的原因了
Spring[ Closing Hibernate Session in OpenSessionInViewFilter]
Hibernate [Releasing JDBC connection]
C3PO [trace com.mchange.v2.resourcepool.BasicResourcePool][2014-08-01 15:24:41.375] [DEBUG] [http-bio-8080-exec-19] [com.opensymphony.xwork2.interceptor.I18nInterceptor:65] - intercept }
[2014-08-01 15:24:41.375] [DEBUG] [http-bio-8080-exec-19] [org.springframework.orm.hibernate4.support.OpenSessionInViewFilter:160] - Closing Hibernate Session in OpenSessionInViewFilter
[2014-08-01 15:24:41.375] [DEBUG] [http-bio-8080-exec-19] [org.hibernate.engine.jdbc.internal.LogicalConnectionImpl:232] - Releasing JDBC connection
[2014-08-01 15:24:41.375] [DEBUG] [http-bio-8080-exec-19] [com.mchange.v2.resourcepool.BasicResourcePool:1644] - trace com.mchange.v2.resourcepool.BasicResourcePool@ca8735 [managed: 2, unused: 1, excluded: 0] (e.g. com.mchange.v2.c3p0.impl.NewPooledConnection@a312c6)
[2014-08-01 15:24:41.375] [DEBUG] [http-bio-8080-exec-19] [org.hibernate.engine.jdbc.internal.LogicalConnectionImpl:250] - Released JDBC connection
[2014-08-01 15:24:41.375] [DEBUG] [http-bio-8080-exec-19] [org.springframework.security.web.access.ExceptionTranslationFilter:115] - Chain processed normally对于 luodaoren1984 同学,我不推荐这个种方法
自己主动关掉SESSION会将HIBERNATE 关联映射弱化。C3P0连接池应该是释放掉的。
1.从jconsole线程数,发现只有三个。
2.windows的性能监控图,只有8个3.通过查看SQL SERVER 2008 查看使用连接数 (语句好多)
SP_WHO 'sa'SELECT*FROM sys.dm_exec_sessions WHERE host_name IS NOT NULLSELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID]
IN
(
SELECT
[DBID]
FROM
[Master].[dbo].[SYSDATABASES]
WHERE
NAME='minbao'
)SELECT login_name,COUNT(session_id)AS session_count
FROM sys.dm_exec_sessions
GROUP BY login_name; SELECT COUNT(*) AS CONNECTIONS FROM master..sysprocesses select connectnum=count(distinct net_address)-1 from master..sysprocesses SELECT cntr_value AS User_Connections FROM master..sysperfinfo as p
WHERE p.object_name = 'SQLServer:General Statistics' And p.counter_name = 'User Connections'
里面有多条查看语句,看的结果没有多大变化。