eXoisp 内存泄露问题

对牛乱弹琴 2014-11-26 02:16:01

eXosip_event_t *je = NULL;
while (!stop_)
{
je = eXosip_event_wait(context_eXosip, 1000, 0);

// 下面这个eXosip_automatic_refresh函数加了也没用
// eXosip_lock(context_eXosip);
// eXosip_default_action(context_eXosip, je);
// //eXosip_automatic_refresh(context_eXosip);
// eXosip_unlock(context_eXosip);

if (NULL == je)
{
continue;
}

eXosip_lock(context_eXosip);
eXosip_event_free(je);
eXosip_unlock(context_eXosip);
continue;


代码如上,版本4.0.0和4.1.0都试过了。
现象是:每次接收到一个event(无论是invite还是message),内存都会增加50k左右,过几分钟会减少10k左右。
最终的结果就是内存泄露越来越多。

有人遇到过吗???
...全文
1415 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
对牛乱弹琴 2015-05-20
  • 打赏
  • 举报
回复
引用 17 楼 blwinner 的回复:
eXosip_register_build_initial_register返回的osip_message_t不会在eXosip_quit释放,只能osip_message_free释放。还有其他内存泄露在查。。。
我已经放弃了,转reSIP了
对牛乱弹琴 2015-05-19
  • 打赏
  • 举报
回复
引用 15 楼 ren0065 的回复:
←_← 我们也用exosip做过一个项目, 但是好久了(远目 已经忘了有没碰到过类似问题了. (主要是懒得看代码 (逃~
blwinner 2015-05-19
  • 打赏
  • 举报
回复
eXosip_register_build_initial_register返回的osip_message_t不会在eXosip_quit释放,只能osip_message_free释放。还有其他内存泄露在查。。。
BrillianceRen 2015-05-14
  • 打赏
  • 举报
回复
←_← 我们也用exosip做过一个项目, 但是好久了(远目 已经忘了有没碰到过类似问题了. (主要是懒得看代码 (逃~
对牛乱弹琴 2015-05-14
  • 打赏
  • 举报
回复
引用 13 楼 u010121676 的回复:
楼主问题解决了么,我也发现类似的问题,请怎么解决的?
没解决,换resiprocate库了
林木江火 2015-04-20
  • 打赏
  • 举报
回复
楼主问题解决了么,我也发现类似的问题,请怎么解决的?
赵4老师 2014-11-28
  • 打赏
  • 举报
回复
引用 8 楼 chen495810242 的回复:
[quote=引用 7 楼 zhao4zhong1 的回复:] [quote=引用 6 楼 chen495810242 的回复:] [quote=引用 3 楼 zhao4zhong1 的回复:] 先看看,出了内存外,其它如句柄数、线程数、USER对象、GDI对象等有没有泄漏。
我刚又测试了一下,除了句柄数,其他的包括线程数,对象都没有增加。但是过了几分钟,句柄数会回复到开始,这个我在网上查了,是eXosip库有个延时释放的问题。但是内存使用不下降[/quote] 那你就只好忍了。你看过SQL Server的内存占用吗?[/quote] 赵老师,你这话一下就降低了你在我心中的形象啊[/quote] 我还不至于自毁形象。延时释放是一种内存管理技巧而不是内存泄露错误。
对牛乱弹琴 2014-11-28
  • 打赏
  • 举报
回复
是不是我发错板块了,但是我没找到sip板块
对牛乱弹琴 2014-11-27
  • 打赏
  • 举报
回复
没人看吗,自己顶一下
对牛乱弹琴 2014-11-26
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
[quote=引用 6 楼 chen495810242 的回复:] [quote=引用 3 楼 zhao4zhong1 的回复:] 先看看,出了内存外,其它如句柄数、线程数、USER对象、GDI对象等有没有泄漏。
我刚又测试了一下,除了句柄数,其他的包括线程数,对象都没有增加。但是过了几分钟,句柄数会回复到开始,这个我在网上查了,是eXosip库有个延时释放的问题。但是内存使用不下降[/quote] 那你就只好忍了。你看过SQL Server的内存占用吗?[/quote] 赵老师,你这话一下就降低了你在我心中的形象啊
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
引用 6 楼 chen495810242 的回复:
[quote=引用 3 楼 zhao4zhong1 的回复:] 先看看,出了内存外,其它如句柄数、线程数、USER对象、GDI对象等有没有泄漏。
我刚又测试了一下,除了句柄数,其他的包括线程数,对象都没有增加。但是过了几分钟,句柄数会回复到开始,这个我在网上查了,是eXosip库有个延时释放的问题。但是内存使用不下降[/quote] 那你就只好忍了。你看过SQL Server的内存占用吗?
对牛乱弹琴 2014-11-26
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
先看看,出了内存外,其它如句柄数、线程数、USER对象、GDI对象等有没有泄漏。
我刚又测试了一下,除了句柄数,其他的包括线程数,对象都没有增加。但是过了几分钟,句柄数会回复到开始,这个我在网上查了,是eXosip库有个延时释放的问题。但是内存使用不下降
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
出了→除了
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
Process Monitor 实时监视文件系统、注册表、进程、线程和 DLL 活动。 http://www.microsoft.com/china/technet/sysinternals/utilities/processmonitor.mspx VMMap 是进程虚拟和物理内存分析实用工具。http://technet.microsoft.com/zh-cn/sysinternals/dd535533 Process Explorer 找出进程打开了哪些文件、注册表项和其他对象,已加载哪些 DLL 等信息。这个功能异常强大的实用工具甚至可以显示每个进程的所有者。http://www.microsoft.com/china/technet/sysinternals/utilities/ProcessExplorer.mspx
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
先看看,出了内存外,其它如句柄数、线程数、USER对象、GDI对象等有没有泄漏。
对牛乱弹琴 2014-11-26
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! Linux下使用top命令。
我在windows下面,就是在任务管理器里面看到内存使用在增加。 我做了这样一个实验: 周五,程序运行后,看到内存使用情况842k,用另一个测试程序发了10个event,看到内存使用1964k。 周一,发现内存丝毫没有减少。 所以铁定有资源泄露,但是找不到是哪里泄露了。 用vld还有crtdbg都检测不到是哪里泄露了
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
检查是否资源泄漏的办法之一: 在任务管理器 进程 查看 选择列 里面选择:内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍,越多越好,比如1000000次甚至无限循环,记录以上各数值,再隔至少一小时,越长越好,比如一个月,再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加,则铁定有对应资源的资源泄漏! Linux下使用top命令。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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