![]() |
Утечка памяти в AIR+SQLite
Вобщем ситуация такая. Есть приложение на AIR, которое производит много расчетов и результат записывает в базу SQLite. Размер конечной базы 5-10 Гб, 100 000 000 000 строк, 30-50 столбцов.
Расчетное время создания ~10 часов. Данные пишутся пачками: сделали 100 000 расчетов, на секунду передали управление программе (обновили индикаторы типа прогрессбара и т.д.), открыли базу, создали транзакцию в 100000 цикле, сделали commit(), закрыли базу, ушли на следующий цикл расчетов. Проблема в том, что при каждом акте записи процесс adl.exe отъедает 10+ Мб памяти, не возвращая ее обратно (даже после закрытия базы). Соответственно когда кончаются системные ресурсы (это где-то 20-25 миллионов строк в базе), т.е adl.exe съел несколько гиг памяти, он с грохотом валится. Как это лечить? может кто сталкивался? Или AIR не предназначен для серьезных приложений и надо переходить на Java+MySQL? AIR 2.0 beta 2, Flex - flex_sdk_4.1.0.14492, FD 3.0.6 RTM |
Нашел источник проблемы. Оказывается, что экземпляр SQLStatement хранит в себе все запросы и транзакции, даже одинаковые, которые через него прогонялись. Т.о., если вы при открытии или создании базы создали один экземпляр SQLStatement, а по окончании работы с базой его закрыли, сделав при этом транзакций на 2 гига, то в памяти будут висеть эти самые 2 гига. Соответственно, после каждой транзакции надо его обнулять и создавать заново, причем, созданный заново, он не будет почему-то доступен сразу, и соответствующего евента тоже нет.
|
Оффтопом поинтересуюсь, что у вас за приложение такое? И почему аир+sqlite?
|
Приложение у меня считает все исходы слот-машины. AIR потому что кросс платформенный, с инсталлятором, ЦП и часть кода уже была написана на AS3. SQLite потому что оно уже AIR'ом поддерживается. Может потом на яве перепишу, главное что оно пока так работает. ))
|
| Часовой пояс GMT +4, время: 18:50. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.