![]() |
![]() |
![]() |
|
Неэффективное использование памяти 1С (8.2.11.235) 32 bit | ☑ | ||
---|---|---|---|---|
0
DangleFly
22.07.10
✎
19:35
|
При разработке специфических средств экспорта из 1С встретился с проблемой. После длительной работы обработки (часов 3-4) возникает ошибка "Недостаточно памяти", хотя процесс 1сv8.exe потреблял максимум 800 Мбайт (определялось как пиковое использование памяти процессом 1сv8.exe в диспетчере задач win).
Процесс 1сv8.exe выполнялся на терминальном сервере win 2003 64 bit, 8 Gb физической памяти. На момент тестирования использовалось всеми пользователями и системой максимум 5Gb. Особенность обработки в том, что она многократно вызывает одну процедуру (по разрезам, по периодам, т.к. выборкам за большой период или по всем разрезам одновременно действительно уже не хватит памяти), которая читает большое количество строк (но не достаточно большое, что бы не хватало памяти) и ведет активное добавление строк в ТаблицуЗначений. Я понимаю, когда 32-разрядное приложение вываливается, если выделение памяти приближается к 1,8-2 Гбайт. Но вот когда в процессе работы 1С запрашивает (если считать по показаниям диспетчера задач виндовс) 800 Мбайт, потом освобождает (выделение падает до 300 Мбайт) и так регулярно повторяется много раз (сотни раз). Для эксперимента, написал обработку, создает большую таблицу значений, в итоге 1сv8 стал "выпадать" при выделении памяти этому процессу 1,7 Гбайт. Это я понимаю. Является ли описанная проблема следствием фрагментации памяти? Как я понимаю, это глюк в 1С, так как проблемы "утечки памяти" нету. Кто как борется с такими вещами? |
|||
1
Demiurg
22.07.10
✎
19:38
|
некоторые ставят более свежие релизы :)
|
|||
2
H A D G E H O G s
22.07.10
✎
19:38
|
Руки патчат
|
|||
3
DangleFly
22.07.10
✎
19:46
|
У меня вот релиз предпоследний.
А где бы это найти почитать, в каком релизе какие исправлены ошибки? |
|||
4
Asmody
22.07.10
✎
19:49
|
"что она многократно вызывает одну процедуру [...] и ведет активное добавление строк в ТаблицуЗначений." - что-то мне подсказывает, что не нужна там таблица значений
|
|||
5
Immortal
22.07.10
✎
19:53
|
(0) в самой таблице значений страшного ничего нет.
очищай принудительно используемые переменные, бывает помогает |
|||
6
DangleFly
22.07.10
✎
19:57
|
(4)
Во-первых, дело тут не в самой таблице, а в том как 1С управлялет ресурсами. во-вторых, что бы судить, нужна там таблица или нет, нужно видеть весь код. |
|||
7
DangleFly
22.07.10
✎
20:01
|
(5) Таблицу значений я привел просто как конкретный пример, что бы меньше абстрагироваться. Нужные переменные на нужных этапах инициализируются и при первой же возможности очищаются (или им присваиваиваются вновь создаваемые объекты), т.е. "кривого" использования переменных тут нет.
|
|||
8
Immortal
22.07.10
✎
20:07
|
(7) в примере из (0) что то сжирает память.
это могут быть: 1. объекты самой 1с 2. неувязки в коде - циклические ссылки 3. взаимодействие с окружением - запись\чтение большого файла, к примеру кстати, про утечки. проводился ли анализ тех.журнала? |
|||
9
Bober
22.07.10
✎
20:10
|
Наверное кэшируются выгруженные объекты, вот и валится.
|
|||
10
rs_trade
22.07.10
✎
20:23
|
(0) технологический журнал заюзай. может чем поможет
|
|||
11
DangleFly
22.07.10
✎
21:55
|
(9) Ну так если выделяется например 800 Мб (не больше) а доступно как минимум в 2 раза больше(1.6-1.7 Gb), то че ей валиться от нехватки памяти?
|
|||
12
Advan
22.07.10
✎
22:01
|
А с чего ты взял что не хватает оперативной памяти? - это не факт
|
|||
13
leshikkam
22.07.10
✎
22:11
|
(0) Посмотри на количество Users и GDI в диспетчере задач с ходом выполнения обработки - я думаю что "течь" будет оочень большая
|
|||
14
DangleFly
22.07.10
✎
22:41
|
(12) Не так диалоговое окно вылезает от 1С, в котором написано "Не хватает памяти", может не дословно привел, но смысл 100% такой
|
|||
15
H A D G E H O G s
22.07.10
✎
22:47
|
(13) Нету там утечек, если он интерфейсные объекты не открывает.
(14) Код приведи |
|||
16
H A D G E H O G s
22.07.10
✎
22:47
|
(13) Открой 50 Блокнотов и посмотри утечки Users и GDI
|
|||
17
DangleFly
22.07.10
✎
22:54
|
(15) Код привести - в смысле исходник? Или код ошибки?
|
|||
18
DangleFly
22.07.10
✎
22:56
|
(15) Но сегодня уже и так и так не смогу привести....
|
|||
19
H A D G E H O G s
22.07.10
✎
22:57
|
(17)
Исходник |
|||
20
H A D G E H O G s
22.07.10
✎
22:57
|
Лучше в виде ВнешнейОбработки
|
|||
21
DangleFly
22.07.10
✎
22:58
|
(13) Посмотрю, но объекты "Users и GDI" тут не причем.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |