Java ojdbc6驱动程序在tomcat中保留软引用
我的应用程序在启动时会触发很多查询来提升初始缓存 此时,使用JProfiler分析代码表明软引用由ojdbc6驱动程序维护。结果,我的初始JVM大小增加到一个更高的值,如果tomcat收到任何请求,这会给我带来性能上的损失 即使服务器没有接收到http请求,经过相当长的时间(在我的例子中是1小时)后,这个被占用的JVM大小也会下降到其大小的近一半 为了解决这个问题,我将tomcat的上下文参数配置为Java ojdbc6驱动程序在tomcat中保留软引用,java,performance,tomcat7,ojdbc,Java,Performance,Tomcat7,Ojdbc,我的应用程序在启动时会触发很多查询来提升初始缓存 此时,使用JProfiler分析代码表明软引用由ojdbc6驱动程序维护。结果,我的初始JVM大小增加到一个更高的值,如果tomcat收到任何请求,这会给我带来性能上的损失 即使服务器没有接收到http请求,经过相当长的时间(在我的例子中是1小时)后,这个被占用的JVM大小也会下降到其大小的近一半 为了解决这个问题,我将tomcat的上下文参数配置为factory=“org.apache.tomcat.jdbc.pool.DataSourceFa
factory=“org.apache.tomcat.jdbc.pool.DataSourceFactory”
和jdbinterceptors=“StatementCache(max=100)”
我仍然可以看到ojdbc6驱动程序使用JProfiler维护的软引用
问题:有没有办法使ojdbc6驱动程序维护的这些软引用最小化
注意:Oracle的白皮书建议驱动程序维护一个准备好的语句缓存。在初始化JVM时更改垃圾收集的参数。这应该在catalina中完成(.bat或.sh,我不知道您使用的是什么)。使用CMS或并行收集器显示相同的结果。还有一个需要共享的观察结果-一个可预测的外部GC触发不会释放任何引用。尽管堆转储将它们显示为软引用。我是不是错过了什么。。。任何提示都会有帮助。请将您的问题包括在附加信息中。