内存泄露
回 楼主(guyuewuhua) 的帖子
能说一下你使用的场景吗?c sdk所有的内存分配都是在apr memory pool上面的,您的代码是否有在pool之外申请内存
-------------------------
回 3楼(guyuewuhua) 的帖子
getobjecttofile下载的内容存放到文件中,而getobjecttobuffe下载的内容是存放在内存中的。oss c sdk操作时用户需要首先aos_pool_create(&p, NULL);申请一块内存,后面所有的操作都会在这个pool上面,最后需要用户调用aos_pool_destroy(p)进行释放。建议每个操作都申请一个memory pool,然后操作结束后理解aos_pool_destroy释放掉
-------------------------
回 6楼(guyuewuhua) 的帖子
这个双向链表的结点也是在memory pool里面申请的,最后都会随着memory pool释放掉,你是否可以在你的AosPoolMgr打印一下什么时候释放这个pool。另外,你是否可以写一个类似while循环这样的case,如果一直调用oss_get_object_to_buffer,看内存是否一直增长。这个也有可能和操作系统真的释放内存策略有关系
-------------------------
回 10楼(oss-dev) 的帖子
简化一下测试逻辑吧,暂时不要引入多线程抢,就一个线程,每次下载完整的一个文件,多跑几次,注意每次下载一个文件的时候AosPoolMgr是否都会释放memory pool
-------------------------
回 13楼(guyuewuhua) 的帖子
私信您了,您方便的话我们旺旺联系一下,论坛效率比较低,耽误您时间
-------------------------
回 13楼(guyuewuhua) 的帖子
您也可以用vc提供的CRT检测一下,我之前跑过,没有发现有内存泄露问题。apr库的内存池申请一大块内存,何时真正还给操作系统和apr库有关系,最后在aos_http_io_deinitialize();时会做一些清理工作。方便的话您直接旺旺我,联系方式已经私信您
赞0
踩0