求救,c++程序调用mysql函数插入数据后内存无法释放

活着的梦想 2017-11-23 11:21:53
详细的来说,我用程序读取点云数据,数据比较大,将点云数据导入到数据库中,mysql_stmt_execute(stmt)执行时程序占用内存会增长是应该的,可是mysql_stmt_execute(stmt)执行完毕后,我把存储数据的指针释放了,结果程序还占用了很大的内存,感觉就像是插入之后,mysql内部开辟了一定内存没释放一样。

修改了my.ini文件的参数,都没用,,,



上面从上到下第一幅图是程序初始占用的内存;第二幅图是执行插入操作时所占的内存情况;第三幅图是插入完成后,把存储数据的结构体指针释放后,会残留内存,,,就是这种情况,很头疼,这样没插入一定的数据,就会增加一些内存,内存早晚会不够用。
...全文
203 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2017-11-27
  • 打赏
  • 举报
回复
既然你从上到下说的都是程序占用的内存,那眼 MySQL 没有关系,MySQL 占用的内存体现在 MySQL 的进程上 如果你不确信,可以把 MySQL 服务停了,看程序的内存有没有释放
  • 打赏
  • 举报
回复
你这个是程序占用的内存,不是mysql占用的内存。不知你c++中使用的是什么数据访问组件,我们这都是delphi的桌面端,使用firedac,他内部应该是封装的ado或者是odbc,当使用server端游标时,必须显示的关闭数据集才会收回内存,否则即使数据集被free了内存不回收起码不是立刻回收。另外不要一次fetch全部或者太多的记录,使用前向游标,本地数据组件如果支持Unidirectional 的话使用Unidirectional,这样不管你多大的数据集,数据集内存占用都微乎其微,几乎可以忽略
rucypli 2017-11-24
  • 打赏
  • 举报
回复
mysql并不会释放内存

56,681

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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