|
Вопрос по сжираемой памяти. | ☑ | ||
---|---|---|---|---|
0
Eugeneer
25.08.22
✎
23:09
|
В результате мощной обработки (400 000 строк) 1С в памяти отожралась с 1.5 гига до 5 гиг оперативки.
И продолжает с таким же размером висеть после закрытия обработки. В чем прикол? |
|||
1
Eugeneer
25.08.22
✎
23:15
|
Ох нифига себе прикол!
В диспетчере. У меня была запущена 1С. И я ее не закрывал! Запустил один раз обработку (как писал сожрала 5 гиг). закрыл обработку, 1С осталась. И решил заново запустить. А в диспетчере появился второй экземляр 1С (хотя фактически всего 1) и тоже начала сейчас сжирать 5 гиг..... Чота я не понял юмора это как так. 1С кстати файлов.... Запущена одна, а в оперативке отобраэается 2. И обе по 5 гиг сожрали. Сейчас ради прикола еще третий раз запущу. |
|||
2
H A D G E H O G s
25.08.22
✎
23:16
|
Единственным благом является знание, а единственным злом – невежество.
|
|||
3
palsergeich
25.08.22
✎
23:18
|
(0) сегодня обрабатывал 30 000 000 строк.
память не отожралась. После закрытия обработки 20 ГБ, которые она съела - очистились. Ищи проблему в коде) |
|||
4
Eugeneer
25.08.22
✎
23:18
|
Третий раз не появилась. Но в диспетчере отображаются 2 запущенных 1С по 10 гиг.
Хотя открыта фактически одна. |
|||
5
Eugeneer
25.08.22
✎
23:19
|
(3) голову сломал. не могу найти хоть тресни.
|
|||
6
Eugeneer
25.08.22
✎
23:19
|
Работает быстро. 400к строк обрабатывается всего 30 секунд.
И другие вещи тоже вообще за секунды. Но память отпускать не хочет. И еще как то баг что две 1С. |
|||
7
Eugeneer
25.08.22
✎
23:21
|
Пипец. заработался. я две запустил)))) сорян.
|
|||
8
Eugeneer
25.08.22
✎
23:22
|
Лдано короче. 5 гиг фигня. На таком обьеме обработки. Позапускал еще. Больше 5 не жрет. На файловой.
После закрытия отпускать память не хочет. Фиг с ним. |
|||
9
Фрэнки
25.08.22
✎
23:31
|
вообще-то от релиза платформы зависит. Т.е. на некоторых ситуация совсем невыносимая, а на некоторых терпимее.
Но на всех в 1С уборкой мусора в памяти дела обстоят плохо. И никогда не было и видимо не будет явных деструкторов объектов. Хотя в Си, на котором собственно и разработана платформа, эти самые деструкторы в наличии. |
|||
10
Krendel
25.08.22
✎
23:45
|
(9) упрутся в производительность-будут
|
|||
11
H A D G E H O G s
25.08.22
✎
23:49
|
(10) Один и тот же код, выполняемый в 1С, примерно в 12 раз медленнее выполняемого на Java
|
|||
12
VS-1976
26.08.22
✎
00:08
|
Что-то кэширует, а сборщик мусора отдыхает )
|
|||
13
VS-1976
26.08.22
✎
00:13
|
Если обработка использует память в больших объёмах, то нужно при написании освобождать по мере отпадания потребности: ДофигаПамяти = Неопределено;
|
|||
14
Krendel
26.08.22
✎
00:15
|
(11) Как мне дир говорил,
база начала откликаться в 3 раза медленнее, мы росли на 30% в год, потом отклик с секунды ушел за 3, и компания удвоилась, думаю что будет если остановить ее нахрен ;-) |
|||
15
Сергиус
26.08.22
✎
03:11
|
(0)Небось какой-ть объект не убил, вот он в памяти и остался.
|
|||
16
Eugeneer
26.08.22
✎
06:53
|
В общем из огромного кода мне стало доподленно известно что память сжирается в результате заполнения ТЧ обработки.
Выявил это путем комментирования участка кода где она заполняется. Прикол в том что она заполняется из такой же ТЗ (которая висит в хранилище), такого же размера строк. Те занимает память именно ТЧ обработки. При закрытии обработки память не чистится. Хотя ТЧ является реквизитом. |
|||
17
rphosts
26.08.22
✎
06:59
|
(0) 400 000 строк кода?
|
|||
18
NorthWind
26.08.22
✎
06:59
|
(9) уже лет 20 смарт-поинтеры используются. И это С++, а не С.
|
|||
19
rphosts
26.08.22
✎
07:00
|
(16) кто тебе сказал, что в хранилище (даже без сжатия) и в памяти будет занимать одинаковое место, сам придумал или подсказал кто-то?
|
|||
20
rphosts
26.08.22
✎
07:01
|
(9) раз в 20 мин приходит мусорщик и кэш шринкуется
|
|||
21
Eugeneer
26.08.22
✎
07:02
|
Причем прикол в том что я даже убрал данные это ТЧ - просто создание пустых строк.
Сейчас ради прикода просто создам пустую обработку с ТЧ и сгенерирую в ней 500к строк. гляну как память жрать будет |
|||
22
Eugeneer
26.08.22
✎
07:03
|
Блин пацаны ну это бред чтобы ТЧ в сотни тысяч строку (даже пустая) жрала 3 гига оперативки.
|
|||
23
Eugeneer
26.08.22
✎
07:12
|
Хахах. Ля прикол...
Создал обработку с нуля. 30 строк кода. Обработку с ТЧ и создал процедуру в 10 строк генерирующую там указанное количество строк. И что вы думаете. Жрет память) |
|||
24
Eugeneer
26.08.22
✎
07:13
|
Сейчас закрою ее. И подожду 20-30 минут.
|
|||
25
NorthWind
26.08.22
✎
07:14
|
(22) значит, механизм ТЧ в памяти, который сделан для отчетов и обработок, не рассчитан на большое к-во данных. Попробуйте ТЗ или еще что-то.
|
|||
26
NorthWind
26.08.22
✎
07:16
|
Если завести ТЗ на сервере и засрать ее таким же количеством строк - расход тот же?
|
|||
27
Eugeneer
26.08.22
✎
07:18
|
(25) фигово как то с ТЗ формы. совсем не подходит. тут вариант может быть пробовать Табличный документ и через него работать.
|
|||
28
Eugeneer
26.08.22
✎
07:18
|
(26) я ее и делаю на сервере. в модуле обработки идет заполнение.
|
|||
29
Strogg
26.08.22
✎
07:18
|
(23) всего 2 варианта: либо после обработки происходит какая-то транзакция в бд, в результате чего и отжирается память, либо твой запрос на 3 строчки раскладывается в кластере на 3 страницы, захватывая для чтения всю бд и в плане запроса в профайлере в нем куча строк. Но это для скульных баз. У тебя такая?
|
|||
30
Eugeneer
26.08.22
✎
07:23
|
Количество реквизитов не имеет значения. В моей десятки самых разны (есть и неограниченной длины).
В пустой обработке я сделал всего два со строкой длинной 10. Память жрется даже если не заполнять реквизиты, просто пустые строки. |
|||
31
Eugeneer
26.08.22
✎
07:25
|
А вот ПРИКОЛ. поставил сделать 99 999 строк. Заполнились за 1 секунду и памяти выросло всего 30 мегабайт.
|
|||
32
NorthWind
26.08.22
✎
07:29
|
Скорее всего работа с этими ТЧ внутри 1С сделана без учета того, что кто-то будет туда пихать сотни тысяч строк. По идее, что можно хранить в ТЧ обработки? Ну настройки какие-нибудь переменной длины, это десятки строк, ну сотни максимум. Полагаю, примерно так они и думали.
|
|||
33
Eugeneer
26.08.22
✎
07:35
|
Бред. Меняю количество генерируемых строк. Уже не жрет.
Сейчас пытаюсь тестить на добавленных реквизитах. Все таки зависимость есть. |
|||
34
NorthWind
26.08.22
✎
07:38
|
(33) ну резонно. Меняй в сторону уменьшения самих реквизитов, их количества и колоичества строк - и жрать перестанет :)
|
|||
35
Eugeneer
26.08.22
✎
07:38
|
(32) я тестирую на на 99 999, 200 000, 400 000. Случайно поставил 4 миллиона даже.
Есть зависимость от количества реквизитов которые даже не заполняю. |
|||
36
Eugeneer
26.08.22
✎
07:47
|
Сделал ТЗ формы - ничего не жрет.
Сделал ТЗ в коде (через переменную) - ничего не жрет. |
|||
37
Eugeneer
26.08.22
✎
07:55
|
КОроче. нафуй......
То жрет то не жрет. И таблица формы уже начала жрать как только реквизиты добавил. и ТЧ жрет. Все жрет. Зависимость от реквизитов есть. Причем даже если их не заполняем. Видимо все таки таблица растет и все реквизиты что в ней ее раздувают, даже если пустые. Нифига не понятно только почему 1С на такую хрень гигабайты тратит. |
|||
38
Eugeneer
26.08.22
✎
07:56
|
Работает все быстро. И 400к строк в принципе за секунды создается. Но память убивается.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |