Паузы приложений Android - медленная сборка мусора или проблема производительности SQLite? - PullRequest
1 голос
/ 08 сентября 2011

У меня есть приложение Android, которое связывается с веб-сервисом Джерси с помощью JSON.Полученные данные хранятся в базе данных SQLite на устройстве Android.

По данным DDMS, размер кучи составляет около 6 МБ, при этом около 2 МБ свободно.Однако приложение «приостанавливает» (не запрашивая новые данные у веб-службы) после получения некоторого количества данных.Затем я вижу запуск сборки мусора и приложение продолжается.Ручной запуск System.gc(), кажется, не оказывает никакого влияния или даже снижает производительность.

Мой вопрос: является ли сборка мусора причиной приостановки, или запись в базу данных SQLite на устройстве Android относительно медленная?

обновление: версия Android 2.3.3

1 Ответ

1 голос
/ 08 сентября 2011

Запись в базу данных SQLite медленная, поскольку файловый ввод / вывод медленный, потому что флэш-память медленная.В частности, транзакции SQLite выполняются медленно, поскольку транзакции записывают данные во флэш-память, а флэш-память работает медленно.Если вы выполняете несколько операций SQL в быстрой последовательности, рассмотрите возможность обернуть их в свою собственную транзакцию.

Помимо этого, используйте Traceview, чтобы определить, где ваше время тратится.

...