RPC на андроид вызывает GC_EXPLICIT - PullRequest
0 голосов
/ 19 апреля 2011

Мне нужно синхронизировать мою локальную базу данных sqlite с удаленной базой данных mysql. Для этого я тестирую различные проекты XMLRPC и JSONRPC.

Я отправляю пакет, содержащий все записи, которые еще не синхронизированы для каждой таблицы.

Когда эти проекты RPC анализируются, logcat данных заполняется GC_EXPLICIT.

GC_EXPLICIT означает, что мусор Коллектор был явно просил собирать, а не быть вызванным высокие отметки в куче. Случается повсюду, но скорее всего когда нить убивают или когда связь переплета снята. Роберт

Я попытался изменить проект XMLRPC для выполнения желаемых действий сразу после чтения записи из пакета, а затем использовать ту же переменную объекта для создания экземпляра следующей записи.

Однако это не решает запросы на сборку мусора.

Есть идеи? чаевые? предложения?

1 Ответ

0 голосов
/ 26 апреля 2011

Я решил свою проблему пару дней назад.

Я использую RPC-модуль Android JSON от Алекса ( проект ).

Я удалил детальгде модуль анализирует JSON.И создал мою собственную процедуру разбора с помощью регулярных выражений.Модуль также выполняет запросы SQLite вместо создания объектов JSON.

Еще одна вещь, которую я изменил, заключается в том, что модуль будет принимать и принимать несколько пакетов с максимум 1000 записей.

Код работает очень быстроДля синхронизации 3000 записей потребовалось 30 минут, сейчас - всего 3 минуты.Причина, по которой я публикую эту информацию вместо кода, заключается в том, что код очень специфичен для проекта.

Информация о том, как выполнять цикл и почему не следует выделять более 1000 объектов, описана в производительности для Androidдокумент .

...