Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.03.2010, 16:28
HraD вне форума Посмотреть профиль Отправить личное сообщение для HraD Найти все сообщения от HraD
  № 1  
Ответить с цитированием
HraD

Регистрация: Apr 2009
Сообщений: 17
По умолчанию Утечка памяти в 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

Старый 25.03.2010, 23:54
HraD вне форума Посмотреть профиль Отправить личное сообщение для HraD Найти все сообщения от HraD
  № 2  
Ответить с цитированием
HraD

Регистрация: Apr 2009
Сообщений: 17
Нашел источник проблемы. Оказывается, что экземпляр SQLStatement хранит в себе все запросы и транзакции, даже одинаковые, которые через него прогонялись. Т.о., если вы при открытии или создании базы создали один экземпляр SQLStatement, а по окончании работы с базой его закрыли, сделав при этом транзакций на 2 гига, то в памяти будут висеть эти самые 2 гига. Соответственно, после каждой транзакции надо его обнулять и создавать заново, причем, созданный заново, он не будет почему-то доступен сразу, и соответствующего евента тоже нет.

Старый 26.03.2010, 08:39
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 3  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Оффтопом поинтересуюсь, что у вас за приложение такое? И почему аир+sqlite?

Старый 26.03.2010, 11:14
HraD вне форума Посмотреть профиль Отправить личное сообщение для HraD Найти все сообщения от HraD
  № 4  
Ответить с цитированием
HraD

Регистрация: Apr 2009
Сообщений: 17
Приложение у меня считает все исходы слот-машины. AIR потому что кросс платформенный, с инсталлятором, ЦП и часть кода уже была написана на AS3. SQLite потому что оно уже AIR'ом поддерживается. Может потом на яве перепишу, главное что оно пока так работает. ))

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:29.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.