|
Оперативная память 1с при сохранении большого числа файлов | ☑ | ||
---|---|---|---|---|
0
UMthis
09.11.17
✎
07:45
|
Доброго времени суток!
1с 8.2 Ситуация следующая. Есть каталог картинок которые лежат на сервере(jpg).(картинок около 10 000 штук) Есть ссылки на эти картинки в 1с. Необходимо данные картинки по определенному признаку сгруппировать и поместить в общие файлы pdf. (в одном файле пдф будет по 3-6 листов с картинками) Груповую обработку по формированию пдф файлов написал(Создается таб док, в него рисуются картинки с разделителем) но вот не задача... 1С начинает дико жрать память и не высвобождать ее при сохранении каждого отдельного таб документа. Порциями выгружать вообще не вариант.. Кто-нить решал данную проблему с высвобождением памяти?? и как? Благодарю.. |
|||
1
Ёпрст
09.11.17
✎
08:02
|
(0) не использовать 1с и табличный документ для этих целей.
|
|||
2
Otark
09.11.17
✎
08:10
|
ТабДок = Неопределено или формирование каждого дока в отдельной функции не спасает? Про управление памятью которую занимает 1с из самой 1с не слышал не разу. И да (1) может иметь смысл.
|
|||
3
Фрэнки
09.11.17
✎
08:19
|
(2) скорей всего, что не спасает. Как минимум, на прежних релизах платформы такие манипуляции видимого эффекта не давали
|
|||
4
rphosts
09.11.17
✎
08:20
|
не существует у 1с релиза 8.2 есть релиз например 8.2.19.130.
Если у релиза есть проблема с утечкой памяти - инфа об этом давно известна. Если это не проблема платформы - значит проблема кода. |
|||
5
Фрэнки
09.11.17
✎
08:23
|
(2) под отдельной функцией тоже не спасает. Нужно спасаться открытием отдельного контекстного пространства в виде объекта или специальной придуманной формы.
НО! Это если не прибегать к использованию регламентных заданий или фоновых и т.п. Нормальный вариант есть в том, чтобы создать задание регламентное, стартовать его в фоновом режиме и тогда оно само за собой подчистит память при завершении. На относительно новых релизах платформы и на 8.2.19.х уже должно работать нормально. |
|||
6
UMthis
09.11.17
✎
08:23
|
(2) так и делаю в отдельной функ-ции. Пробовал очищать его после записи..
(1)Дело в том, что данная манипуляция необходима для пользователей в дальнейшем. |
|||
7
Фрэнки
09.11.17
✎
08:26
|
(6) к сожалению убедился в том, что если существует табличный документ в контексте, то выделенная ему память продолжает "висеть" до закрытия контекста - не закрытия окна/поля с табличным документом, а самого того владельца, которому это все окно или поле принадлежит.
|
|||
8
mehfk
09.11.17
✎
08:26
|
(6)
Откликаешься на эту вакансию https://kemerovo.hh.ru/vacancy/20157532 Устраиваешься работать в 1С. Исправляешь баги платформы. Увольняешься из 1С. Профит! |
|||
9
UMthis
09.11.17
✎
08:28
|
(7) Принудительно программно его нельзя закрыть?
Меня очень смущает сей факт, что это не предусмотрено.. |
|||
10
Фрэнки
09.11.17
✎
08:38
|
(9) нельзя. В классических языках есть отдельное понятие и процедура деструктора объекта, в котором проверяется вся захваченная объектом память и освобождается принудительно. В 1С деструкторов объектам не раскрыли и конструкции
ТабДок = Неопределено не являются дестурктором. Чтоб закрылись все созданные явным и неявным образом объекты с владельцем "текущий контекст" должно "закрыться" объект-владелец, например, именно форма, указанная владельцем в создании табличного документа. Если не указан владелец, то даже не знаю, кого нужно будет "закрыть", чтоб произошла очистка памяти без завершения сеанса пользователя, например. |
|||
11
ildary
09.11.17
✎
08:39
|
(10) тогда может имеет смысл добавить окно прокладку, которое открывается, отрабатывает текущую задачу и закрывается, освобождая ТабДок?
|
|||
12
UMthis
09.11.17
✎
08:41
|
(10) в теории, на грани фантастики.-
Если данная функция будет вешаться на форму(определенную) А цикл, будет вызывать- открывать/закрывать формы и выполнять алгоритм. В теории это же сработает?))) |
|||
13
Фрэнки
09.11.17
✎
08:48
|
(11,12) ТабДок на чем создается? Если это поле самой формы, то я подозреваю, что форму нужно сделать не внутри объекта вида отчет/обработка, а допустим общая форма конфигурации. Подозреваю, что для общих форм вероятно предусмотрели очистку памяти. А если это формы создаются после создания объекта обработка/отчет, то они продолжат существовать в памяти до момента закрытия само объекта-родителя формы.
Тут важно понимать, что формы это не совсем объекты. |
|||
14
Фрэнки
09.11.17
✎
08:50
|
В реальности надо копать в регламентные/фоновые задания. Тогда эти задания будут создавать новые сеансы, записывать файловые документы на диск и завершаться, а затем уже результаты открывать и смотреть, причем, если говорим о пдф, то открывать их уже запуском нового приложения-вьювера
|
|||
15
Сияющий в темноте
09.11.17
✎
09:00
|
ну да,если нн хватает памяти на клиенте,давайье перейдем на сервер и будет не хватать памяти там,но он же 64 бита,и мы это не сразу заметим
а вообще,говорилось,что 1с при освобождении памяти не сразу возвращает ее системе,поэтому,посмотрите,что происходит с памятью при формировании второго документа,возможно,она больше памяти не запррсит |
|||
16
Фрэнки
09.11.17
✎
09:01
|
13+ скорей всего, что общая форма тоже не является самостоятельным объектом и "привяжется" к контексту того объекта, в котором она открывается
|
|||
17
Фрэнки
09.11.17
✎
09:03
|
(15) но за пределами открываемых/закрываемых сеансов утечки памяти нет
|
|||
18
UMthis
09.11.17
✎
09:04
|
(16) Таб док я не открываю и не вывожу.. он висит программно. я его только заполняю(области). потом в пдф выгружаю.
|
|||
19
UMthis
09.11.17
✎
09:12
|
(16) все верно... не работает через доп форму это решить.
|
|||
20
xxTANATORxx
09.11.17
✎
09:25
|
(0)а почему не использовать 8.3?
|
|||
21
UMthis
09.11.17
✎
09:53
|
(20) ок, допустим есть возможность в упр режиме запустить.
и как это реализовать? |
|||
22
H A D G E H O G s
09.11.17
✎
12:39
|
(0) Вы говорите, как будто это что-то плохое.
|
|||
23
H A D G E H O G s
09.11.17
✎
12:41
|
Это вы еще на 32x сидите скорее всего.
Добро пожаловать в светлое будущее x64, когда 1Ска ограничивает себя только свободной оперативной памятью: https://photos.app.goo.gl/agVEXa1cv3FvFpRA3 |
|||
24
ildary
09.11.17
✎
12:43
|
(23) позвольте поинтересоваться - это реальное потребление памяти при работе или результат утечек памяти?
|
|||
25
igork1966
09.11.17
✎
12:44
|
(0) может имеет смысл формировать html и его уже конвертить
в pdf? https://forum.infostart.ru/forum9/topic76893/ https://geektimes.ru/post/134505/ |
|||
26
H A D G E H O G s
09.11.17
✎
12:45
|
(24) Это реальное потребление памяти при печати/просмотре 100500 высококачественных tiff изображений.
Как только свободная оперативка подходит к концу - 1С сбрасывает потребленную оперативку. |
|||
27
ildary
09.11.17
✎
12:46
|
(26) т.е. в 1С открываем картинку, за ней другую, и так 100500 раз -и получаем (23)?
|
|||
28
H A D G E H O G s
09.11.17
✎
12:46
|
Хочу выразить респект. Если раньше, при потреблении больше 1.5 гига изображения иногда проскакивали неотрисованными/неотпечатанными, то теперь такой фигни нет. Все хорошо в x64.
|
|||
29
H A D G E H O G s
09.11.17
✎
12:47
|
(27) Да, все так.
|
|||
30
Фрэнки
09.11.17
✎
12:50
|
(29) Так это не просто 64-битный клиент, а вероятно более свежая версия платформы. Я видел где-то рекомендации использовать 64-бит начиная с какой-то там версии для решения проблем с нехваткой памяти при работе конфигуратора в режиме сравнения конфигураций, объединения, обновления и т.п.
|
|||
31
UMthis
10.11.17
✎
10:58
|
вопрос решен..
Развернут сервак с 128гб оперативки))) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |