求救!使用时遇到内存泄露

发布于 2021-11-26 09:45:14 字数 262 浏览 673 评论 8

我实用CTcpServer作为服务端,该服务端维护一个ConnID数组,当收到OnAccept时,将ConnID放入数组,当收到OnClose、OnError、OnServershutdown等通知时,将相应的ConnID移出数组,以上对于数组的操作都做了同步;同时,我又开了一个线程不断地遍历这个数组,往每个ConnID发送数据包(约10kB/s);当我用Telnet客户端连接上述服务端后,能收到数据,但是服务端的内存在不断上涨,经过初步检查,似乎是某些PostSend后,完成端口没有返回,导致占用的私有堆内存未回收。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

离不开的别离 2021-11-27 18:00:36

引用来自“伤神小怪兽”的评论

1、可能服务器程序有Bug,导致内存泄漏,好好调试

2、可能服务器程序处理性能不足,导致数据在组件中不断堆积,好好调试

另外,强烈建议用Get/SetConnectionExtra() 代替你的数组,详情参考HP-Socket开发指南

泛滥成性 2021-11-27 17:56:39

引用来自“伤神小怪兽”的评论

1、可能服务器程序有Bug,导致内存泄漏,好好调试

2、可能服务器程序处理性能不足,导致数据在组件中不断堆积,好好调试

另外,强烈建议用Get/SetConnectionExtra() 代替你的数组,详情参考HP-Socket开发指南

拥有 2021-11-27 17:45:19

引用来自“伤神小怪兽”的评论

1、可能服务器程序有Bug,导致内存泄漏,好好调试

2、可能服务器程序处理性能不足,导致数据在组件中不断堆积,好好调试

另外,强烈建议用Get/SetConnectionExtra() 代替你的数组,详情参考HP-Socket开发指南

噩梦成真你也成魔 2021-11-27 17:44:37

1、可能服务器程序有Bug,导致内存泄漏,好好调试

2、可能服务器程序处理性能不足,导致数据在组件中不断堆积,好好调试

另外,强烈建议用Get/SetConnectionExtra() 代替你的数组,详情参考HP-Socket开发指南

无边思念无边月 2021-11-27 17:22:19

其实现在就是2个常驻线程,一个是CTcpServer内部的用来调用GetQueuedCom...的,最终产生各种On...通知的;另一个是我定义的,不停地循环我的ConnID数组,发送数据至每个ConnID。

因为我不是很熟悉Telnet协议,比较担心的是这种情况:在某个时刻组件内部产生一个异常,还未来得及触发OnError,此时我的发送线程在往这个异常的ConnID上发数据,这种情况会不会导致完成端口不返回?或者返回很慢?或者必须等Telnet关闭才能返回?

 

长安忆 2021-11-27 14:39:29

引用来自“Athrob”的评论

往每个ConnID发送数据包, 这里会不会没及时释放.

看透却不说透 2021-11-26 13:01:07

引用来自“Athrob”的评论

往每个ConnID发送数据包, 这里会不会没及时释放.

挽清梦 2021-11-26 09:58:19

往每个ConnID发送数据包, 这里会不会没及时释放.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文