win server 2008 64bit上调oci时狂吃内存

孟俊 2012-04-11 04:45:06
各位大哥大姐,我做了一个程序访问oracle数据库,在Windows 32位下都蛮好(这个程序在32位下稳定运行了很长时间的),现在要迁移到64位,我发现只要进行几个oci的调用,程序占用的内存就狂涨到6G,毫无头绪啊~~~~

通过在OCICreateEnv中设置malloc的钩子,发现程序执行OCIStmtExecute的时候,反复的会申请内存(大概每次申请4k),执行一个sql后,可能内存使用量就到1G了,可以那都是在oci的库里面回调出来的,请问各位有经验的兄台,有遇到过的吗?

环境:
Windows server 2008 64bit
oracle 11g r2 64bit(我是直接在oracle的服务器上调试的,没有那么多的64位机器可以用,这我想应该没问题吧,把此程序的32位版放到上面,加一个oracle 32位的客户端也能正确的运行)

没遇到过,给点思路也行啊,没思路的,帮忙顶一下,谢谢了~~。
...全文
100 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
孟俊 2012-05-09
  • 打赏
  • 举报
回复
问题找到了,就是在Fetch的时候一个ub4的参数写成了ub2传进去,导致可能读取预读取的行数的时候是一个超大的数字(很奇怪为什么在32位平台下那样的就没有问题)
啊彪123 2012-04-12
  • 打赏
  • 举报
回复
应用,sql有问题吧!
孟俊 2012-04-12
  • 打赏
  • 举报
回复
主要就是发现在执行OCIStmtExecute的时候不停的申请内存,其他的地方也没发现什么
我心飞翔 2012-04-11
  • 打赏
  • 举报
回复
查看哪段代码吃内存罢,然后再分析这段代码罢。
具体没遇到过类似的情况,不过可以给你一些建议。
应用程序整个改成64位的应该不现实,当时也没考虑这方面吧。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧