2011-09-26 78 views
1

我正在编写使用Corona进行游戏设计课程的游戏,尽管我仍在学习,但我已经掌握了大部分基础知识。现在,我有一种情况,在大约两分钟左右的时间后程序会变慢,我不完全确定原因。我已经实施了代码来删除已经达到其目的的所有主体,并且我甚至设置了在每个主体被删除时打印通知。Corona SDK内存泄漏

http://www.mediafire.com/?5fz7ru0c6euwq1k

这是下载链接。任何帮助是极大的赞赏。谢谢!

回答

6

首先,您是否检查过内存使用情况?如果问题逐渐变慢,那肯定听起来像是内存泄漏,但是您需要检查内存使用情况。打印出内存使用控制台,像这样:

print("mem "..collectgarbage("count")) 

假如把它放在一个enterFrame事件侦听器,这样就可以连续观看的内存使用量,而你的应用程序正在运行。

现在,当您看到应用程序使用的内存时,任何类型调试中最关键的一步就是隔离问题。也就是说,在导致问题的代码中当场为零。对于某些问题,您可以依赖将调试消息打印到控制台等技术,但对于内存泄漏,最好的办法是选择注释代码的各个部分,以查看对内存有什么影响。

例如,首先在一个屏幕上注释掉事件侦听器,然后检查内存使用情况。如果泄漏消失了,那么你知道这个问题与这些事件监听器有关。如果泄漏未受影响,则还原这些事件侦听器并注释下一个可能的内存泄漏原因。冲洗并重复

一旦您知道导致泄漏的代码的确切部分,您可能会看到需要修复的部分。如果不是,请询问具体的代码。