Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ojdbc6驱动程序在tomcat中保留软引用_Java_Performance_Tomcat7_Ojdbc - Fatal编程技术网

Java ojdbc6驱动程序在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

我的应用程序在启动时会触发很多查询来提升初始缓存

此时,使用JProfiler分析代码表明软引用由ojdbc6驱动程序维护。结果,我的初始JVM大小增加到一个更高的值,如果tomcat收到任何请求,这会给我带来性能上的损失

即使服务器没有接收到http请求,经过相当长的时间(在我的例子中是1小时)后,这个被占用的JVM大小也会下降到其大小的近一半

为了解决这个问题,我将tomcat的上下文参数配置为
factory=“org.apache.tomcat.jdbc.pool.DataSourceFactory”
jdbinterceptors=“StatementCache(max=100)”

我仍然可以看到ojdbc6驱动程序使用JProfiler维护的软引用

问题:有没有办法使ojdbc6驱动程序维护的这些软引用最小化


注意:Oracle的白皮书建议驱动程序维护一个准备好的语句缓存。

在初始化JVM时更改垃圾收集的参数。这应该在catalina中完成(.bat或.sh,我不知道您使用的是什么)。使用CMS或并行收集器显示相同的结果。还有一个需要共享的观察结果-一个可预测的外部GC触发不会释放任何引用。尽管堆转储将它们显示为软引用。我是不是错过了什么。。。任何提示都会有帮助。请将您的问题包括在附加信息中。