cmem调试命令发现一个lua服务内存占用达到3g

241 views
Skip to first unread message

qiye...@gmail.com

unread,
Jul 24, 2017, 11:08:56 PM7/24/17
to skynet-users
写的一个lua服务,用mem命令查看内存占用正常,如下:
:000001ac 3785.73 Kb (snlua snaxd udpserver)
用cmem命令发现内存占用高达3g,如下:
:000001ac 3296233608
该服务启动时用cmem命令查看占用10m以内,然后每天以500m左右到速度上涨,现在涨到3g。
另外没有找到skynet wiki中所说的MEMORY_CHECK宏。在 malloc_hook.c 中打开注释的 #define MEMORY_CHECK 将在每次内存分配时都再内存块的末尾记录一个额外的 tag ,在释放的时候修改。
请教大家有遇到过类似问题么。

qiye...@gmail.com

unread,
Jul 25, 2017, 2:12:54 AM7/25/17
to skynet-users
pull了最新的skynet,找到了MEMORY_CHECK宏。(尴尬)

在 2017年7月25日星期二 UTC+8上午11:08:56,qiye...@gmail.com写道:

qiye...@gmail.com

unread,
Jul 25, 2017, 3:47:33 AM7/25/17
to skynet-users
开启MEMORY_CHECK,没有发现异常,但是内存依旧在涨。


在 2017年7月25日星期二 UTC+8上午11:08:56,qiye...@gmail.com写道:
写的一个lua服务,用mem命令查看内存占用正常,如下:

云风 Cloud Wu

unread,
Jul 25, 2017, 4:07:02 AM7/25/17
to skynet...@googlegroups.com


<qiye...@gmail.com>于2017年7月25日周二 上午11:08写道:
检查分配的 C 内存,正确释放它;知道怎么排查漏释放的内存,是用 C 语言开发所需要的基本素养。

否则:绝对不要引入任何 C 语言编写的模块。

qiye...@gmail.com

unread,
Jul 25, 2017, 5:31:08 AM7/25/17
to skynet-users
感谢云大回复,最近正在学习c语言知识。这个lua服务引用的第三方库中并没有使用skynet中封装的内存分配函数(skynet_malloc等),这样通过cmem命令应该不能统计到引用库所占用的内存吧?

在 2017年7月25日星期二 UTC+8下午4:07:02,云风写道:

云风 Cloud Wu

unread,
Jul 25, 2017, 5:34:13 AM7/25/17
to skynet-users
全部统计了。

<qiye...@gmail.com>于2017年7月25日周二 下午5:31写道:
--
您收到此邮件是因为您订阅了Google网上论坛上的“skynet-users”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到skynet-users...@googlegroups.com
要发帖到此群组,请发送电子邮件至skynet...@googlegroups.com
访问此群组:https://groups.google.com/group/skynet-users
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/skynet-users/8563d8b2-fa29-4b05-ac12-7e9aae7eaa43%40googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout

qiye...@gmail.com

unread,
Jul 26, 2017, 4:33:35 AM7/26/17
to skynet-users
问题已解决,引用的RakNet网络库中有一处内存泄漏bug。


在 2017年7月25日星期二 UTC+8上午11:08:56,qiye...@gmail.com写道:
写的一个lua服务,用mem命令查看内存占用正常,如下:
Reply all
Reply to author
Forward
0 new messages