还在于你的业务数据的变化是否很大
如果变化很大不适于使用pool或者cache
如果变换很少,则应当尽量早的进行cache
实现起来其实不是很麻烦。

业务数据变化不大,对了 你们一般是自己写POOL还是用开源的?推荐一个 最好有文档的,谢谢

那种自己写数据库连接池和POOL时代已经过去,而且一般人没有水平写的。

使用Apache common Pool,JF和Spring都是使用这个POOL的。

如果自己直接POOL,对代码干扰很大,因为POOL首先要借出,然后还要还掉,就象数据库连接一样,万一中间代码过长,没有归还,又内存泄漏了。为避免这个问题,目前优雅方式使用AOP或者动态代理,但是这样学习的东西更多,相当于自己做一个小框架,动态代理+POOL文章:
http://www.jdon.com/jive/thread.jsp?forum=91&thread=18095

这就是为什么推荐使用象JF/Spring框架的原因,EJB 无态Session Bean缺省也是靠EJB容器的POOL支持的。

可能有人觉得框架包含东西太多,所以JF坚持简单原则,动态代理+POOL是JF一个主要方面。

这两天加上了cache利用apache common pool 做了对象池 有很大的收获!!,针对数据层作了cache ,pool设置为最大活动数100 空余10 最大等待时间10秒 驱逐和运行时间差10秒,服务器内存设置为-Xms64m -Xmx256m,jmeter设置一个线程组60个并发!并发时间间隔0秒!(实际上的通过客户机察看到实际平均一秒并发48个左右)这样的配置下去,虽然只测了一个小时但是效果很令人满意^_^,通过jprofilter查看到最大使用堆 在70m 没有超过70m ,达到70m的时候 GC开始回收 回收非常彻底!!基本从70m回收到30m左右~~~很有规律 初步看了一下查不多11多分钟回收一次。不过当我把线程组编成100个并发 时间间隔为0秒的时候,线程池出现异常(怀疑线程池设置问题)。在此还是要感谢BANQ & Coolyu0916 ,还有提一下common pool代码写得很精辟
[该贴被bingochen于2007年03月29日 23:08修改过]

to:Coolyu0916
不明白为什么要先写入ArrayList然后再变成xmldoc那??
不能从Result直接变么??


我是这么想的 如果从ResultSet直接变的话,因为我的xml是用Dom 初步想法是如果直接变的话占用连接时间太长,所以先写入list然后马上把JDBC有关的东西全部释放

非常不错,你用你的实验数据从中立角度做了一次有益尝试,相信更多人会坚信Pool和Cache是提高性能的必由之路。不考虑资源控制(Pool)和性能优化(cache)的系统是一个不成熟系统,或可称是一个DEMO系统。

这也是为什么说使用Jdon框架或使用EJB等将会保证性能的原因了(EJB是分布式Cache)。
[该贴被banq于2007年03月30日 08:31修改过]

用sax应该会比list快,用list你会需要两次转换,这样只需要一次

jprofilter监视器是什么来的呢?是自己开发的一个类吗?

to: sms1981
jprofilter 是下载的,我下载的是只有10天的期限,而且感觉jprofilter虽然会让你看到 对象的回收情况,但是太慢了,而且架上jprofilter进行测试的话,jvm的回收速度更慢,不过 要进行详细的测试还是推荐使用它,不知道有没有人推荐一个没有时间期限的版本,下载地址http://www.ej-technologies.com/


这里可以下载最新的版本以及获得相应的注册码

请问下bingochen:

   哪些东西应该放在cache,哪些应该放在pool中.这里cache指的是自己实现的一个数据结构集吗?cache是如何实现的?是用数据结构吗?能下你的实现过程中吗

上面有个道友说了,只要数据变化不大的,我的cache不是整个数据库的datacache,我对业务对象的cache,我的业务对象变化不大,如果是复杂的cache可能就是要自己实现一个复杂的数据结构,不过我这边都是简单的用list作cache的,自己可以根据一些逻辑封装,业务对象采用对象池,如banq说的 防止 如潮水般的并发请求

请问一下,如何用hibernate+spring构建hiberante的二级缓存呢

我是新手,感觉在这里学到很多东西~各位都是高手,以后多多关照~!