AIR App挂起,然后通过错过的计时器加速?

时间:2011-11-01 22:53:33

标签: flex sqlite garbage-collection air

这是一个难以诊断的问题,我希望有人可以帮助我。

我们有一个AIR应用程序(www.trainerroad.com),它使用Native Process从USB记忆棒的命令行中读取数据。这是一个自行车应用程序,数据是心率,节奏,速度和力量。

当有人锻炼时,我们每秒都会将数据记录到sqlite数据库中。我们有一个sqlite连接到数据库。我们有一个计时器,每秒钟都会打勾,这就是触发插入的原因。

我们有几百个用户。他们中的一些人已经看到它应用程序将运行45分钟罚款,然后挂起30秒到几分钟。然后,它会释放,锻炼中的时钟会很快下降。这意味着计时器都被击中了。

这让我觉得应用程序正在悬挂,但我无法弄清楚是什么。该应用程序每秒执行相同的代码45分钟左右,然后突然冻结。 (顺便说一句,它不是每一个45分钟,但它确实发生在锻炼运行一段时间后)。

我认为它与SQLite有关。也许数据库在被执行时正在被压缩?我很难过,我无法在本地重现这一点。

有没有人对如何调试此问题或我的应用程序的哪个区域可能导致此问题有任何想法?我知道这很难。

更新
我在内存分析器运行时运行了20分钟,但我根本没有看到内存使用量增加。我可以通过查看峰值与当前内存使用情况来判断它是垃圾收集。

我每隔60个滴答添加两个system.gc()调用。我希望这不会让它变得格格不入,但是当它播放时我做的不多,所以我觉得我应该很好。不确定这是否是造成问题的原因。

1 个答案:

答案 0 :(得分:1)

看起来手动垃圾收集修复了这个问题。自从我们进行了升级以来,我们还没有看到这一点。