Это была сложная проблема для диагностики, и я надеялся, что кто-то может мне помочь.
У нас есть приложение AIR ( www.trainerroad.com ), которое использует собственный процесс для чтения данных из командной строки, поступающей с USB-накопителя. Это велосипедное приложение, данные которого включают частоту сердечных сокращений, частоту вращения педалей, скорость и мощность.
Пока кто-то тренируется, мы записываем эти данные в базу данных sqlite каждую секунду. У нас есть sqlite соединение с базой данных. У нас есть таймер, который срабатывает каждую секунду, и это то, что запускает наши вставки.
У нас есть несколько сотен пользователей. Некоторые из них видели, что приложение будет работать нормально в течение 45 минут, а затем зависает от 30 секунд до пары минут. Затем он отключится, и часы на тренировке будут тикать очень быстро. Это означает, что таймеры все получают удар.
Это заставляет меня думать, что приложение вешает что-то, но я не могу понять, что. Приложение выполняло один и тот же код каждую секунду в течение примерно 45 минут, а затем внезапно зависало. (кстати, это не КАЖДЫЕ 45 минут, но это происходит после того, как тренировка уже некоторое время запущена).
Я думаю, что это связано с SQLite. Может быть, база данных сжимается во время ее выполнения? Я в тупике и не могу воспроизвести это локально.
У кого-нибудь есть идеи, как отлаживать это или какая область моего приложения может вызывать это? Я знаю, это трудно.
обновление
Я запустил профилировщик памяти в течение 20 минут, пока он работал, и я вообще не видел пикового увеличения использования памяти. Я мог бы сказать, что это сборщик мусора, посмотрев на пиковое и текущее использование памяти.
Я добавил два вызова system.gc () каждые 60 тиков. Я надеюсь, что это не делает его бесполезным, но я не делаю много, пока он играет, поэтому я думаю, что я должен быть хорошим. Не уверен, что именно из-за этого возникла проблема.