|
0 / 0 / 0
Регистрация: 06.09.2010
Сообщений: 4
|
|
C# + SQL compact edition06.09.2010, 15:53. Показов 3767. Ответов 10
Метки нет (Все метки)
Коллеги, добрый день!
Есть проблема в виде: В течении определенного времени приложение накапливает данные - 3 коллекции. В среднем, первые две коллекции по 40-60 тыс значений, третья 300-500 тыс. значений. По нажатию кнопки поочередно из этих коллекций данные инсертятся в таблицы Sql compact (одна запись любой коллекции - одна транзакция), однако в середине третьей коллекций возникает исключение memory out of range (процесс занимает 1300-1400 Мб памяти) и соответственно падает. Пробовал методы SqlCeConnection.Dispose() и SqlCeEngine.Dispose() каждые 1000 транзакций, помогает, но мало, реально освобождается 3-5Мб, в то время как прибавляется по 15-20. Вопрос в следующем, каким образом внести данные в Sqlcompact, либо куда и как внести этот массив данных. Спасибо заранее.
0
|
|
| 06.09.2010, 15:53 | |
|
Ответы с готовыми решениями:
10
Как в Sql Server Compact Edition 4.0 задать связи между таблицами Создание БД в ms sql compact edition Microsoft SQL Server Compact Edition |
|
49 / 49 / 15
Регистрация: 13.08.2010
Сообщений: 160
|
|
| 06.09.2010, 18:44 | |
|
попробуй после каждой тысячи кроме всего написать GC.Collect()
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2010
Сообщений: 4
|
|
| 07.09.2010, 08:55 [ТС] | |
|
GC.Collect(); Есть после окончания каждой коллекции. Не помогает.
Добавлено через 13 часов 51 минуту Пробовал выливать данные в файл, выливается плохо, если не сказать отвратительно, в файл пишется примерно каждая 10-ая итерация. Так что вопрос по прежнему открыт, либо пните в нужную сторону: где в Visual Studio во время отладки, во время паузы, посмотреть, куда девается память? Спасибо.
0
|
|
|
49 / 49 / 15
Регистрация: 13.08.2010
Сообщений: 160
|
||||||||||||||||
| 08.09.2010, 16:40 | ||||||||||||||||
|
опубликуй пример, если GC.Collect() не помагает - значит гдето есть сылки на обькты которые не нужны. Нужно выходить из зоны видимости, только тогда вызывать GC.Collect() при таких условиях он будет иметь смысл. К примеру
0)
0
|
||||||||||||||||
|
5 / 5 / 4
Регистрация: 06.05.2010
Сообщений: 180
|
||
| 09.09.2010, 07:36 | ||
|
Я думаю, что одно соединение не может весить полтора гига и нет смысла его диспозить. Оно не увеличивает свой размер, хоть если через него вставить миллион записей. Это нужно только если бы у тебя на каждую строчку создавалось по отдельному соединению и оказало бы 500 000 соединений в памяти, тогда диспозинье каждого соединений освободило бы много памяти. А код можешь выложить? Я с CE шкой работал немного. Она туповата на больших данных, у меня БЛОБ больше 8 Кб не принимала. Может в ней самой проблема.
0
|
||
|
0 / 0 / 0
Регистрация: 06.09.2010
Сообщений: 4
|
||||||
| 09.09.2010, 15:47 [ТС] | ||||||
Добавлено через 3 минуты Также вопрос актуален, где в Вижуал Студии посмотреть, какие куски кода отжирают много памяти :о)
0
|
||||||
|
90 / 88 / 17
Регистрация: 30.10.2009
Сообщений: 562
|
|
| 09.09.2010, 16:06 | |
|
пользуйтесь тегами для вставки кода. код тяжело читается.
0
|
|
|
0 / 0 / 0
Регистрация: 06.09.2010
Сообщений: 4
|
||||||
| 09.09.2010, 16:26 [ТС] | ||||||
0
|
||||||
|
5 / 5 / 4
Регистрация: 06.05.2010
Сообщений: 180
|
|
| 09.09.2010, 22:13 | |
|
мне в глаза бросилось, что команда создается внутри цикла. это значит, что в памяти будет List.Count объектов команд. команда, по- моему, тяжеловатый объект. Хотя на них никто не ссылается, сборка мусора хитро устроена.
попробуй создать единственную команду за пределами цикла и потом вызывать ее с разными параметрами? И я по-моему пользовался ExecuteNonQuery() а не Scalar().
0
|
|
|
8 / 8 / 1
Регистрация: 20.07.2010
Сообщений: 22
|
|||||||||||
| 10.09.2010, 11:23 | |||||||||||
|
Объявите в основном статическом классе метод:
0
|
|||||||||||
|
139 / 137 / 21
Регистрация: 26.01.2010
Сообщений: 350
|
|
| 10.09.2010, 12:49 | |
|
Данная функция не спасает. Мне нужно было вывести большое количество записей (больше тысячи), на каждую запись динамически создавались контролы: несколько лейблов, пара текстбоксов и прочее. В итоге было очень много контролов. Естественно, прога вылетала с ошибкой о нехватке памяти. Узнав про эту функцию, я её опробовал. Результата не последовало, даже если вызывать её после создания контролов на одну запись. Вылетает та же самая ошибка.
PS: проблему решил постраничным выводом. 50 записей на страницу.
0
|
|
| 10.09.2010, 12:49 | |
|
Помогаю со студенческими работами здесь
11
Экспорт данных в БД MS SQL Server Compact Edition Как в VS 2010 создать базу данных SQL Server Compact Edition 4.0 Microsoft SQL Server Compact Edition в SQL Server Management Studio Express
Базу SQL Server Compact Edition 4.0 нельзя выбрать в качестве источника данных в проекте Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|
|
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|