困扰了近两月的内存泄露问题终于初见眉目了,罪魁祸首:proxool
生产环境的系统近两个月一直不稳定,过两天内存就会占满,通过jprofiler,jrmc各中方法调试,总是找不到任何原因。
昨天,在做另外一项测试中,终于发现了一个最可能的存在的内存泄露的地方,proxool数据库连接池内存泄露。
测试环境:
tomcat6.0
mysql5.0
昨天分别到官方网站下载dbcp,proxool,c3po最新版本。全部配置tomcat下成jndi数据源,连接数都配置成最大300,最小30
jrokit R27.5
testInsertDB.jsp直接通过数据源连接数据库,通过一个事务往数据库每次插入200万条数据库。
<%
Connection conn = CourseDBService.getConnection();
Statement stmt = conn.createStatement();
String sb=new String("insert into t_sys_log values('id");
conn.setAutoCommit(false);
for(int i=5000000;i<7000000;i++){
StringBuilder sb1=new StringBuilder(sb);
sb1.append(i).append("','userId").append(i).append("','userName").append(i).append("',null,'测试课程").append(i).append("',null)");
//System.out.println("-----------------sb="+sb1);
stmt.executeUpdate(sb1.toString());
}
conn.commit();
stmt.close();
conn.close();
%>
tomcat 6启动后占用168M内存,
开始用proxool从100万-300万插入200万数据,tomcat6 占用内存从168M一直涨到1G,在插入完毕后,通过jrmc手动垃圾回收后,通过jrmc观察,时间堆的占用量还在600M左右,怎么也回收不了。
用dbcp从300万-500万插入200万数据,tomcat6 占用内存从168M稍微涨了一点,但是内存变化不大。
用c3p0从500万-700万插入200万数据,tomcat6 占用内存基本没有什么变化。
具体插入的时间我没有太多统计。粗略感觉,好像时间差不多
今天凌晨,服务器上2个tomcat中一个连接池切换成dbcp,到现在内存回收正常,一直很稳定,通过jrmc看内存占用一直稳定在40%左右,在到60%时会回收到40%,最低能回收到30%。
而另外一个依旧用proxool连接池的tomcat,内存占用率从40%一会就升到100%,然后突然回收到40%,然后一会有迅速的达到100%,然后又回收..........,最低只能回收到40%
在线监控中.......
不知道proxool是不是确实有内存泄露...........
-
分享到:
相关推荐
标题中的"proxool-0.9.1.jar"和"proxool-cglib.jar"是两个重要的Java档案文件,它们是Proxool项目的组件。Proxool是一个开源的数据库连接池解决方案,它允许开发者在Java应用程序中高效地管理数据库连接。数据库连接...
**proxool-0.9.0RC3:一个高效开源的数据库连接池** 在IT行业中,数据库连接池是提升应用程序性能的重要工具。其中,`proxool`是一个备受开发者青睐的开源连接池解决方案,版本号为0.9.0RC3。这个版本提供了稳定且...
`proxool-0.9.1.jar` 是一个Java库,它提供了名为Proxool的数据库连接池服务。数据库连接池在多用户、高并发的Web应用中扮演着重要角色,因为它有效地管理了数据库连接,避免了频繁创建和关闭连接带来的性能开销。...
`proxool.jar`是Proxool数据库连接池的实现库,它是Apache软件基金会的一个开源项目。Proxool是一个轻量级、高效的数据库连接池解决方案,它允许开发者在Java应用程序中管理数据库连接,以提高性能并减少资源消耗。...
同时,监控Proxool的运行状态,定期检查日志,以便及时发现并解决可能出现的连接泄漏或资源耗尽问题。 在压缩包的`lib`目录下,如果没有其他文件,那么可能假设开发者已经将所有必要的库文件都包含在项目中。通常,...
标题中的“proxool配置详解”指的是Proxool,这是一个开源的数据库连接池管理工具,它在Java应用程序中用于管理和优化数据库连接。Proxool的主要作用是提高应用性能,通过复用已建立的数据库连接,避免频繁创建和...
3. **监控功能**:独特的监控机制使得开发者可以实时查看连接池的状态,如当前连接数、空闲连接数、等待连接数等,这有助于及时发现并解决连接泄漏问题。 4. **诊断能力**:当系统出现异常时,Proxool能提供详细的...
由于项目需求的需要,我们引入了连接池。...我们采用了Hibernate,所以可以考虑hibernate自带的连接池机制,但是发现效率不高,而且Hibernate也推荐使用c3p0或Proxool连接池,在我们的项目中采用了Proxool
1.解决不能Unregister jdbc driver的内存泄露问题。 十二月 02, 2013 8:19:43 上午 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/xxx] registered the JDBC ...
标题“proxool_0.9.1”提及的是一个名为Proxool的数据库连接池管理工具的特定版本,即0.9.1。Proxool是Apache软件基金会的一个开源项目,它提供了一种轻量级的数据库连接池解决方案,允许开发者更有效地管理和控制...
总结来说,"proxool相关jar包.rar"提供的是一组用于管理数据库连接的Java类库,包括Proxool的两个不同版本和其依赖的CGLIB库。这些资源可以帮助开发者构建高效、可监控的数据库连接池,提升Java应用的性能和稳定性。
**Proxool数据库连接池详解** 在IT行业中,数据库管理是关键的一环,尤其是在高并发、大数据量的应用场景下,数据库连接池的使用显得尤为重要。Proxool是Apache的一个开源项目,它提供了一个轻量级的数据库连接池...
这样不仅减少了数据库连接的创建和销毁开销,还能防止过多连接导致的资源耗尽问题。 **配置Proxool** 1. **添加依赖**: 首先,你需要在项目中引入Proxool的库。如果你使用的是Maven,可以在pom.xml文件中添加以下...
**Proxool 连接池详解** Proxool 是一个高效、易用的数据库连接池,它通过提供中间代理层管理数据库连接,从而实现数据库连接的复用,提高应用程序的性能和效率。Proxool 的设计目标是为 Java 应用程序提供简单、...
**Proxool连接池详解** Proxool是Apache软件基金会的一个开源项目,它是一个轻量级的数据库连接池实现,提供了高效、灵活的数据库连接管理。在Java应用程序中,使用数据库连接池可以显著提高数据库操作的性能,因为...
Java connection pool : Proxool api(chm)
"proxool-0.9.0RC3.jar" 是一个Java档案文件,它包含了Proxool库的0.9.0RC3版本。Proxool是开源的Java连接池实现,设计用于提供数据库连接管理服务,它使得在多线程环境中高效地管理和重用数据库连接成为可能。连接...
压缩包子文件的文件名称列表只提到了"proxool",这可能意味着除了这两个JAR文件外,可能还需要其他依赖库或配置文件才能完整运行Proxool。 总结来说,Proxool是一个功能强大且易于使用的Java数据连接池实现,通过...
**Proxool数据库连接池详解** Proxool是源自SourceForge的一个开源项目,它是一款针对Java平台设计的高效、易用的数据库连接池技术。在Java应用开发中,数据库连接池是一个至关重要的组件,用于管理和复用数据库...
Java连接池,特别是Proxool,是数据库管理中一个至关重要的概念,它提高了数据库操作的效率和性能。连接池在Java应用程序中起着桥梁的作用,它管理数据库连接,避免了频繁创建和销毁连接的开销。Proxool是Apache软件...