|
v8: Утечка памяти при работе с ТабДок | ☑ | ||
---|---|---|---|---|
0
Подскажите_Мне
20.11.13
✎
01:41
|
Короче привет всем.
Проблема с утечкой памятью в 1С, это старо как дерево в моем дворе.\ Есть конфигурация УАТ(упр. авто. трансп.), там есть печатная форма, сама по скебе она большая, много изображений и т.д., сам файл обработки весит 20 метров. В печатной форме нужные изображения, схема и т.д. Печатают такие формы по 140 штук в день минимум.\ Процесс: диспетчер заходит в документ, там жмет "печать" и выводится табличный документ, потом посылает на печать. В этом и вся проблема, именно при выводе табличного документа, отнимает примерно 80 мб ОЗУ. Если диспетчер закрыл печатную форму и документ, перешел к другому документы и опять сделал печать, ОЗУ опять!!! растет и так бесконечно. То есть если он напечатает 10 документов, ОЗУ возрастает на 800 000 кб(800 метров), и все начинает виснуть просто ужасно, пока 1С не перезапустят. Как решить проблему? Делал анализ, в момент формирования ТабДок оперативу не есть вообще, НО только при ТабДок.Показать() отнимает 80 метров сразу. Пробовал ТабДок.Показать() ТабДок.Очистить() ТабДок = "" Он показывает документ, сразу его очищает, НО при этом оперативу не освобождает, а так и кушает 80 метров, даже очищая табдок, то-есть как я понимаю он ещё в другом месте хранит табдок при выводе. (может кэш) |
|||
1
H A D G E H O G s
20.11.13
✎
01:42
|
Держи, читай, страдай
v8: Что в памяти тебе моей... |
|||
2
КонецЦикла
20.11.13
✎
01:51
|
Насколько умен механизм куч Windows
Может перефразировать: насколько успещно 1С им пользуется? По-моему уже давно 1С нас%ать на память и HDD. Хомячки и так довольны. |
|||
3
Подскажите_Мне
20.11.13
✎
01:54
|
Не знаю какие хомячки довольны, у меня диспетчера не могут печатать, после 12 печатей, оператива возрастает до 1ГБ и это на один процесс. Почему нельзя все сделать нормально...
|
|||
4
Подскажите_Мне
20.11.13
✎
01:54
|
Может есть стороннии DLL библиотеки? для сброса памяти которая в резерве.
|
|||
5
Подскажите_Мне
20.11.13
✎
01:56
|
хз полезно ли, с ИТС:
"В платформе 1С:Предприятие 8 используется стратегия управления временем жизни объектов, основанная на подсчете ссылок на объекты - reference counting. Данная стратегия заключается в следующем. Каждый объект платформы содержит счетчик ссылок. При появлении ссылки на объект (объект присваивается какой-либо переменной) происходит увеличение счетчика на единицу, при уничтожении подобной ссылки - значение счетчика на единицу уменьшается. Объект автоматически уничтожается, и память, занимаемая им, освобождается в момент, когда счетчик ссылок объекта становится равен нулю. " |
|||
6
Подскажите_Мне
20.11.13
✎
01:58
|
Ну и далее:
" Особенностью подсчета ссылок на объекты является возможность организации "циклической ссылки". Циклическая ссылка возникает, когда объекты начинают ссылаться друг на друга. Это приводит к ситуации, при которой ни один из объектов, участвующих в циклической ссылке, не будет уничтожен. В свою очередь это является причиной возникновения утечек памяти (memory leaks). Необходимо, по возможности, избегать появления циклических ссылок. Соблюдение достаточно простых правил при разработке конфигураций позволит избежать проблем связанных с циклическими ссылками. В случае появления подобной ссылки необходимо определить момент для ее разрыва, чтобы объекты могли быть уничтожены нормальным образом. Полный перечень случаев возникновения циклической ссылки привести невозможно, приведем лишь некоторые примеры: хранение в переменной модуля объекта (набора записей, формы) ссылки на данный объект (набор записей, форму) - ситуация приводит к появлению циклической ссылки - объект (набор записей, форма) никогда не будет уничтожен; хранение ссылки на владеемый объект в объекте-владельце и ссылки на объект-владелец во владеемом объекте - оба объекта никогда не будут уничтожены. Следует обратить внимание, что, помимо переменных модулей, ссылки на объекты могут образовываться при передаче их в методы встроенного языка. Например, добавление в список значений нового значения - этого же списка значений, приведет к появлению циклической ссылки. " |
|||
7
H A D G E H O G s
20.11.13
✎
02:09
|
(6) Запей, это муть. Картинки жрут память только влет, это ущербный GUI, еще времен GDI/GDI+
|
|||
8
Подскажите_Мне
20.11.13
✎
02:11
|
(7) во всех норм языка есть сброс памяти переменной.
delphi(pascal) FreeAndNull php - unset но только не в 1С |
|||
9
H A D G E H O G s
20.11.13
✎
02:12
|
(8) Это только изнанка.
|
|||
10
Aleksey
20.11.13
✎
02:42
|
Это что за печатная форма такая, что то у меня из УАТа печатают, такой проблемы не встречал
|
|||
11
Подскажите_Мне
20.11.13
✎
02:46
|
(10) нормальная не стандартна печат. форма.
При открытии выделяет ей 20 метров, при закрытии освобождает её 20 метров. НО сам табдок 80 метров не освобождает. Скажите, вариант печатать НЕ через 1С ? Например собрать ТабДок, сохранить в файл и сразу начать печать файла? Автоматом? |
|||
12
GROOVY
20.11.13
✎
02:53
|
(11) Так может дело в дебильном табДок который нестандартно формируется?
|
|||
13
Подскажите_Мне
20.11.13
✎
02:54
|
(12) в смысле? что же в нем не так?
При формировании от не забирает память, только при Показать жрет 80 метров. Само собой это из за больших и качественных картинок в нем, но без них никуда. Как вариант сжать картинки из вне, но это не решает проблему, память будет расти всегда. |
|||
14
GROOVY
20.11.13
✎
02:56
|
(13) Мда... И это называется "утечка памяти"?
|
|||
15
Подскажите_Мне
20.11.13
✎
02:58
|
(14) тему прочитать не вариант?
После печати, закрытия печатной формы и закрытия документа, память НЕ освобождается, это называется утечка памяти и после 12 печатий, ОЗУ занимает 1ГБ и все умирает. |
|||
16
Подскажите_Мне
20.11.13
✎
02:59
|
(14) про обработку(печать форму), там 4 макета, в каждом схема картинки на 3 метра.
То-есть при печати выводится один макет на котором изображение весом 3 метра, НО занимает этот ТабДок 80 метров ОЗУ и не освобождает. |
|||
17
GROOVY
20.11.13
✎
03:00
|
Ну не знаю, печатаем прайс с картинками, таких траблов не замечено. Может платформу обновить?
|
|||
18
H A D G E H O G s
20.11.13
✎
03:01
|
(17) Это давно известная проблема, берет начало с появления 8.2
|
|||
19
Подскажите_Мне
20.11.13
✎
03:01
|
(17) какая у Вас ?
Проверял на 8.3.3.641 и 8.2.16.363 |
|||
20
GROOVY
20.11.13
✎
03:04
|
Рабочая 8.2.19.76
Тестим еще и на 8.3.4.317 Проверю завтра несколько документов подряд распечатать. |
|||
21
H A D G E H O G s
20.11.13
✎
03:07
|
(20) че там проверять.
Открой и закрой любой рисунок размером 10 метров |
|||
22
Подскажите_Мне
20.11.13
✎
03:07
|
(20) можно не до конца печатать, а что бы показывал табдок и сделать предосмотр и так к другим
|
|||
23
H A D G E H O G s
20.11.13
✎
03:18
|
(22) Есть идейка.
Давай я тебе Нетленку 3.0 сброшу, там будет функция вытеснения физической памяти в виртуальную. Это может помочь. |
|||
24
Подскажите_Мне
20.11.13
✎
03:30
|
(23) что это? доп dll ? кидай.
Пока с помощью моей любимой тулзы RIOT (сжимает картинки для сайтов) сжал картинку одного макета с 3 метров до 600кб (почти без потери), проверю мож меньше памяти покушает |
|||
25
H A D G E H O G s
20.11.13
✎
03:41
|
ушло
|
|||
26
programmist1cswworld
20.11.13
✎
03:51
|
Что-то знакомое...
уходит а потом сразу возвращается |
|||
27
Sammo
20.11.13
✎
04:36
|
Было подобное на 8.1 еще.
Решалось то ли присвоить Неопределено, то ли еще как Кстати вопрос - следующий документ при печати это ведь Новый ТабличныйДокумент? |
|||
28
Подскажите_Мне
20.11.13
✎
06:20
|
(27) конечно.
Думаешь сделать ТабДок глобальным? и каждый раз сувать? Пока я сжал обработку 20 метров, в 5 метров (сжал все картинки 8 штук). Уже стало получше, хотя так же оперативу кушает под 70 метров. |
|||
29
ЧеловекДуши
20.11.13
✎
07:19
|
(28) Попробуй картинки сжать до разумных размеров, не 2000 на 4000 :)
|
|||
30
ЧеловекДуши
20.11.13
✎
07:19
|
+(28) Ты единственный и неповторимый... Пиши правильные нетленки
|
|||
31
Подскажите_Мне
21.11.13
✎
02:55
|
Все решил идеально, утечки больше нет.
Причина не в ТабДок, причина в ПолучитьМакет. описал решение тут http://contrbug.ru/thread.php?id=30 |
|||
32
programmist1cswworld
21.11.13
✎
03:17
|
Не обращайте на меня внимание
(к/ф Кто подставил кролика Роджера) |
|||
33
programmist1cswworld
21.11.13
✎
03:18
|
Ой. А как правильно внимание или внимания?
|
|||
34
ДенисЧ
21.11.13
✎
04:24
|
(31) "Теперь меняем внешнею"
Расстрелять.... |
|||
35
Подскажите_Мне
21.11.13
✎
04:37
|
(34) из за одной опечатки расстрелять? прошли времена 90х, сейчас уже нормальные люди даже не обращают внимание на ошибки в тексте, тем более в интернете
|
|||
36
ДенисЧ
21.11.13
✎
04:39
|
(35) Значит, будут расстреливать ненормальные, типа меня.
|
|||
37
Подскажите_Мне
21.11.13
✎
04:52
|
(36) сил хватит? перестаньте жить в иллюзии, расстрел давно отменили
|
|||
38
H A D G E H O G s
21.11.13
✎
11:35
|
(37) Там, в этих макетах, рисунки одни и те же?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |