|   |   | 
| 
 | Вопрос по сжираемой памяти. | ☑ | ||
|---|---|---|---|---|
| 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к строк в принципе за секунды создается. Но память убивается.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |