Приложение AIR зависает, затем ускоряется через пропущенные таймеры? - PullRequest
1 голос
/ 02 ноября 2011

Это была сложная проблема для диагностики, и я надеялся, что кто-то может мне помочь.

У нас есть приложение AIR ( www.trainerroad.com ), которое использует собственный процесс для чтения данных из командной строки, поступающей с USB-накопителя. Это велосипедное приложение, данные которого включают частоту сердечных сокращений, частоту вращения педалей, скорость и мощность.

Пока кто-то тренируется, мы записываем эти данные в базу данных sqlite каждую секунду. У нас есть sqlite соединение с базой данных. У нас есть таймер, который срабатывает каждую секунду, и это то, что запускает наши вставки.

У нас есть несколько сотен пользователей. Некоторые из них видели, что приложение будет работать нормально в течение 45 минут, а затем зависает от 30 секунд до пары минут. Затем он отключится, и часы на тренировке будут тикать очень быстро. Это означает, что таймеры все получают удар.

Это заставляет меня думать, что приложение вешает что-то, но я не могу понять, что. Приложение выполняло один и тот же код каждую секунду в течение примерно 45 минут, а затем внезапно зависало. (кстати, это не КАЖДЫЕ 45 минут, но это происходит после того, как тренировка уже некоторое время запущена).

Я думаю, что это связано с SQLite. Может быть, база данных сжимается во время ее выполнения? Я в тупике и не могу воспроизвести это локально.

У кого-нибудь есть идеи, как отлаживать это или какая область моего приложения может вызывать это? Я знаю, это трудно.

обновление
Я запустил профилировщик памяти в течение 20 минут, пока он работал, и я вообще не видел пикового увеличения использования памяти. Я мог бы сказать, что это сборщик мусора, посмотрев на пиковое и текущее использование памяти.

Я добавил два вызова system.gc () каждые 60 тиков. Я надеюсь, что это не делает его бесполезным, но я не делаю много, пока он играет, поэтому я думаю, что я должен быть хорошим. Не уверен, что именно из-за этого возникла проблема.

1 Ответ

1 голос
/ 24 ноября 2011

Похоже, что ручная сборка мусора устранила проблему. Мы не видели этого с тех пор, как вставили обновление.

...