页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题

       oracle作为业务库制作报表,使用一段时间后反馈内存溢出或是访问卡顿,经分析堆信息,发现oracle连接中会缓存大量的字符串内容,且未能正确释放导致内存溢出等情况:

如下图为系统中打印的简单的堆信息,第一个是char数组,第二个是byte数据:

          

解决方案

         具体原因,因涉及数据库驱动的原理,从网上也未获取到更多的信息,因此我们也无法明确oracle驱动在何种情况下会占用大量的内存,也无法明确该驱动占用的内存何种情况下会释放。对此可在启动参数中添加jvm参数,通过-Doracle.jdbc.maxCachedBufferSize=16 限制oracle驱动中存储的字符串的个数。在未设置该参数前默认是存储64个字符串信息,设置后限制其只能存储16个,最大限度去尽量避免因此oracle驱动中生成的字符串个数过多导致内存溢出。

         另添加JVM参数可参考wiki文档:https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=35751396

  对于V95版本,也可将如下值设置回默认值1000,以避免缓存字符串内容过多:

对于V97版本,可在系统选项的高级设置项中将该值设置小一些,建议设置为1000:


Viewtracker License Missing

There is a problem with the license of the Viewtracker addon. Please check if you have a valid license.

授权码细节




  • 无标签