Имя: Пароль:
1C
 
Если обезжирить CF, будет ли конфа занимать меньше места в памяти?
,
0 Гений 1С
 
гуру
06.04.23
12:14
Я смотрю БП3 кушает по 1-2 Гб памяти. Если выкинуть из нее драйвера БПО и прочие ненужные макеты, будет ли меньшая по размеру CF занимать меньший объем памяти?
1 Мультук
 
гуру
06.04.23
12:20
(0)

Лучше сразу выкинуть БП3 и купить бухам счёты. Чего зря людей мучать.
2 lodger
 
06.04.23
12:43
(0) очевидно, Ватсон, меньше памяти на CF - меньше общий расход памяти.
3 unenu
 
06.04.23
12:53
(0) кривой отчет "все по всем" все равно сожрет всю память
4 KJlag
 
06.04.23
12:55
конфу под замок, и все изменения в расширение?
5 evorle145
 
06.04.23
12:54
(0) обычно дешевле памяти докупить или платить программисту за такую работу... да еще потом обновление станет дороже...
6 magicSan
 
06.04.23
13:02
нет, драйвер загружается когда нужен и весит копейки
7 Chai Nic
 
06.04.23
13:07
Пока радикально не поменяют способ хранения метаданных, пока не откажутся от хранения конфигурации в блобе - так и будет. Всё равно все метаданные распаковываются в память и лежат там. Ну или не все, а к которым хоть раз было обращение. Потому что дергать каждый раз блоб слишком затратно. Вот и получаем жрущее память решение.
8 Garykom
 
гуру
06.04.23
13:13
(0) У тебя не получится.
Потому что есть особенность которую ты вроде как 1Сник со стажем походу не знаешь.
9 Serg_1960
 
06.04.23
13:15
(0) Нет, не будет. Потому что нет прямой зависимостью между "объёмом" конфигурации и занимаемой оперативной памятью. "Ненужные" объекты конфигурации не грузятся в память до тех, пока к ним нет обращения. А если загружаются - то кэши не хранят данные вечно. Это же основы, это же букварь :(
10 Serg_1960
 
06.04.23
13:21
[уже уходя] Не всё так просто под луной - ничто не вечно под луной
"Использование модулей с повторным использованием возвращаемых значений"
https://its.1c.ru/db/v8std#content:724:hdoc
11 Chai Nic
 
06.04.23
13:21
(9) Тем не менее, прожорливость растет со временем. Если лет 10 назад толстый клиент БП 3.0 (или рабочий процесс сервера) занимала порядка полугига в памяти, то теперь - раза в 3 больше..
12 magicSan
 
06.04.23
13:29
(10) это другое, там данные кеш руются чтоб на сервер не прыгать
13 Chai Nic
 
06.04.23
13:32
(12) Повторное возвращение значений - это кривой костыль, вызванный отсутствием глобальных переменных в управляемом приложении. А это отсутствие вызвано претензиями на суровый энтерпрайз с сотнями рабочих серверов и рабочих процессов в кластере.
14 Garykom
 
гуру
06.04.23
13:34
(13) Эээ
Ты ошибаешься и все перепутал
15 timurhv
 
07.04.23
09:21
(5) может и дешевле, но в крупных конторах проще франчу платить)
16 Chai Nic
 
06.04.23
13:38
(14) В каком месте перепутал? Если бы были глобальные переменные, то можно было бы просто хранить там все значения, которые могли бы потребоваться несколько раз, не связываясь с "функциями, повторно возвращающими значение". Но глобальные переменные требуют привязки сеанса к одному рабочему процессу, чтобы было одно и то же адресное пространство для доступа к объектам в памяти. А это с суровым энтерпрайзом, где рпхост для выполнения серверного вызова выбирается какой попало, на основе неких критериев, не совместимо.
17 Garykom
 
гуру
06.04.23
13:39
(13)
1. Модули с повторным использованием возвращаемых значений никак не связаны с "отсутствием глобальных переменных в управляемом приложении"
2. Отсутствие "глобальных переменных в управляемом приложении" никак не связано с "суровый энтерпрайз с сотнями рабочих серверов и рабочих процессов в кластере"
Достаточно одного сервера (серверного процесса) - если непонятно почитай про Stateful и Stateless
3. Глобальные переменные есть - Механизм временного хранилища
18 Garykom
 
гуру
06.04.23
13:40
(16) Ты понимаешь отличия ручного кэширования реализованного кодом
От кэширования средствами платформ?
19 Chai Nic
 
06.04.23
13:42
(17) "Достаточно одного сервера (серверного процесса) - если непонятно почитай про Stateful и Stateless"
Сервер 1с нельзя отнести ни к тому ни к другому. На уровне сеанса он stateful, на уровне соединения- stateless.
"Глобальные переменные есть - Механизм временного хранилища"
Туда можно класть только то, что сериализуемо. Это не настоящие переменные, а имитация. С таким же успехом можно просто класть всё это во временные файлы.
А вот попробуйте например COM-соединение таким образом сохранить?
20 Garykom
 
гуру
06.04.23
13:44
(19) >А вот попробуйте например COM-соединение таким образом сохранить?

Эээ.
А зачем его хранить когда оно не нужно?

Ладно:
1. На клиенте оно хранится прекрасно.
2. На сервере оно тоже хранится прекрасно - в длительном фоновом задании.
21 Chai Nic
 
06.04.23
13:46
(20) "На сервере оно тоже хранится прекрасно - в длительном фоновом задании."
А как оно будет вызываться, через механизмы оповещений, с неким квантом опроса? А так чтобы моментально - никак? И чтобы напрямую работать с этим COM-объектом тоже никак?
22 Garykom
 
гуру
06.04.23
13:47
(19) И да.
Применение "COM-соединение" в любом месте (не только тогда когда иначе никак) признак отсталости (грубо говоря deprecated) и непрофессионализма.
Ибо в ближайшем будущем грядет переход сервером на ARM, не говоря уже что сейчас есть линукс, мак и андроид
23 Garykom
 
гуру
06.04.23
13:48
(21) Запускай толстого клиента и делай каком
24 Гений 1С
 
гуру
06.04.23
13:48
(4) а конфа на замке может быть выгружена в файлы и загружена из них?
25 Гений 1С
 
гуру
07.04.23
09:22
(5) почему дороже? По идее должно натянуться.
26 Garykom
 
гуру
06.04.23
13:49
(23)+ ой там тоже "кванты опроса" :)
28 Garykom
 
гуру
06.04.23
13:56
(22)+ https://v8.1c.ru/tekhnologii/sistemnye-trebovaniya-1s-predpriyatiya-8/
Кто забыл то сервер 1С уже работает на ARM
Да куча ограничений и багов
29 Chai Nic
 
06.04.23
13:57
(22) Плохо что в 1с объявили COM депрекейтед, но не сделали свою функциональную альтернативу COM. Чтобы в активном режиме подключаться к чужой базе, прозрачно обращаться к её объектам и методам, без предварительной адаптации этой чужой базы.
30 Garykom
 
гуру
06.04.23
14:00
(29) Это не 1С объявили что технология COM устарела а сама MS.
ODATA уже есть, если хочешь RPC то блин любой готовый засунь или сам напиши.
31 Garykom
 
гуру
06.04.23
14:00
(30)+ И да.
Включенный по умолчанию COM - это так то еще одна дырка.
Нельзя так.
32 Chai Nic
 
06.04.23
14:02
(31) Ну могли бы не включать по умолчанию, а сделать это галочкой в конфигураторе.
33 Chai Nic
 
06.04.23
14:03
+(32) Имеется в виду не в дереве конфигурации, а в настройках информационной базы..
34 TormozIT
 
гуру
06.04.23
15:45
Ролей побольше удали
35 VladZ
 
06.04.23
15:48
(0) Посмотри цены на оперативку и забей.
36 TormozIT
 
гуру
06.04.23
15:50
(19) Глобальные переменные - НЕ временное хранилище. Они НЕ сериализуются и существуют исключительно в клиентском контексте. Можешь держать в глобальной переменной любой объект как и в обычной переменной.
37 Garykom
 
гуру
06.04.23
15:53
(36) Он хотел глобальные переменные на сервере
Я ему привел аналог
38 TormozIT
 
гуру
06.04.23
15:58
(37) А, понял. Параметры сеанса и временное хранилище можно с натяжкой засчитать за аналог глобальных переменных.
39 Eiffil123
 
06.04.23
16:18
(30) технология устарела, а из экселя данные тащить надо )
40 Chai Nic
 
06.04.23
16:32
(38) С такой же натяжкой за глобальные переменные можно считать файлы на диске. Это не то, потому что переменная это именно объект в памяти, не обязательно сериализуемый.
41 TormozIT
 
гуру
06.04.23
17:20
(40) Файлы на диске в большинстве случаев нельзя, т.к. они привязаны к локальной файловой системе. Перенос соединения на другой рабочий сервер 1С (rphost.exe на другом компьютере) сделает их невидимыми коду. А временное хранилище и параметры сеанса будут восстановлены.
42 TormozIT
 
гуру
06.04.23
17:20
COM переживет еще всех нас
43 Garykom
 
гуру
06.04.23
17:27
(42) Только внутри виртуалок с эмуляцией x86 и x86_64
44 Garykom
 
гуру
10.04.23
10:50
(43)+ К сожалению нативная архитектура x86/x86_64 относительно скоро того, канет в лету

ДЕЗИНФОРМАЦИЯ
45 ДедМорроз
 
06.04.23
19:17
Идея C.O.M. достаточно простая - это набор заранее известных интерыейсов,которые один объект может предоставить другому.
К сожалению,все забыли,что эта общая стоуктура присутствует во многих других местах.
А вот ее реализация,которую использует 1с,в частности, IDispatch,считается уже устаревшей.
Однако,идея реализации передачи данных сквозь процессы и машины никуда не денется.
Опять же,изнутри C.O.M. очень проста и построена на интерфейсах IMalloc,IMarshal и IMoniker,реализация которых,на самом деле,от платформы не зависит.
А с помощью Proxy.dll в одном процессе можно вместо Stub-процесса использовать свое приложение,причем независимо от операционной системы и процессора.
Главное,правильно описать IMarshal и реализацию интерфейсов.
46 magicSan
 
06.04.23
19:26
Где то недавно читал что глобальные переменные - дурость.
Хотелось бы услышать контекст необходимости в них
47 Гений 1С
 
гуру
06.04.23
19:40
Кстати, может 1С выдвинуть хотелку, чтобы она бинарные макеты не тянула в память вместе со всей CF или она и не тянет?
48 Гений 1С
 
гуру
06.04.23
19:42
49 Bigbro
 
06.04.23
20:30
#$%^&!! теперь Г1С не только в ютубчик хабр инфостарт и жж а еще и на гитхаб испражняется((
50 lodger
 
06.04.23
20:46
(49) автор ветки мог и отклонить, если бы счёл исью полнейшим бредом.
51 Гений 1С
 
гуру
06.04.23
20:58
(50) можно смоделировать. заливать в CF в макет файлы разного размера и проверять занимаемый объем памяти.
52 magicSan
 
06.04.23
21:23
(51) Нахера вообще было начинать ветку не проверив? По твоему мнению 50 юзверей просто запустив конфу уже выжирают 50 гигов?
53 Гений 1С
 
гуру
06.04.23
21:31
(52) уфф, отлегло от сердца: https://geniy1s.ru/zagruzhaet-li-1s-v-pamyat-vsyu-cf/
54 vde69
 
06.04.23
21:32
(0) в 1с есть сборщик мусора, если на модуль (а в твоем случае это внешняя DLL) нет дискрипторов внутри 1с - на него удаляются все ссылки и позже удаляются дискрипторы процессов 1с, ну а потом и винда удаляет из памяти их при условии, что они не заняты другими процессами.
55 Гений 1С
 
гуру
06.04.23
21:32
(54) это не внешняя DLL, а просто бинарный макет
56 vde69
 
06.04.23
21:34
(55) в бинарники DLL лежит, он сохраняется в темповую папку и от туда подключается в память (при необходимости)
57 vde69
 
06.04.23
21:35
(56) +
кстати эта длл создана по технологии внешних компонент.

все торг оборудование именно так работает...
58 vde69
 
06.04.23
21:37
ну и потом я занимался сабжем (из бухгалтерии делал нетленку), что-бы выкинуть ненужное уйдет месяц, а у тебя может и год :)
59 magicSan
 
06.04.23
22:06
(53) Знаешь почему так????? Потому что интерпретатор! Ты думаешь демоническое обновление откуда?
60 TormozIT
 
гуру
06.04.23
22:38
(0) Отключи все обработчики начала сеанса (УстановкаПараметровСеанса, ПриНачалеРаботыСистемы, ПередНачаломРаботыСистемы). Добавь в конфигурацию роль без RLS, дающую все права на все объекты. Создай нового пользователя и дай ему только эту роль. Запусти под ним тонкий клиент.
61 vovastar
 
06.04.23
22:49
Сергей, а какая вообще цель преследуется?
Уменьшить, чтобы что?
62 TormozIT
 
гуру
06.04.23
22:55
(61) Чтобы сделать доклад на Рарус TechDays 2023. Ведь нашли же однажды серьезную проблему с неоправданным поеданием памяти ролями - https://infostart.ru/1c/articles/991247/
63 vovastar
 
06.04.23
23:03
(62) У Сергея ипотека. Ему надо деньги зарабатывать, а не по конференциям шляться.
64 Serg_1960
 
07.04.23
09:55
"Отлегло от сердца, значит, всё-таки работа с памятью сделана в 1С по уму."(с) - пятница удалась :)

- открыл сеанс работы (520мб);
- открыл журнал документов, документ на редактирование, печатную форму на просмотр (1200мб);
- все открытые формы - закрыл, как бы вернулся к первоначальному состоянию;
- объём занятой памяти начал уменьшаться и стабилизировался в районе 1100мб.

520мб-->1100мб. К чему это я вообще?

Когда я в (10) указал ссылку, то я не предлагал это сделать поводом для спора... я лишь намекнул на то, что объём занимаемой памяти зависит не от "количества", а от "качества" алгоритмов конфигурации (если так можно выразиться) - одна неверная строка кода и память высасывается словно пыль пылесосом. Просто, тупо и без затей, например, достаточно вспомнить про "утечки памяти".
65 magicSan
 
07.04.23
10:17
(64) Конфигурация?
66 Serg_1960
 
07.04.23
11:06
(65) Не принципиально.
67 lodger
 
07.04.23
11:14
(53) а. ты в файловой проверял? давай в к-с.
68 magicSan
 
07.04.23
11:19
(66) ерп, сделал все тоже самое память пть минут выше 500 не ушла после закрытия форм менее 100, но это на сеансе.
69 Serg_1960
 
07.04.23
16:56
(68) Это если тонкий и клиент-серверный вариант? А если толстый и файловый? Два гига с копейками?

Я ж говорю - дело не только в конфигурации.
70 magicSan
 
07.04.23
17:16
(69) толстый по сети такие данные гонять не будет, файловые на одной машине - там вообще смысл нету заморачиватся - однопользоватлеьская штука.
71 ДедМорроз
 
08.04.23
15:44
Ну,java,например,сразу отъедает кучу памяти,хотя ей,может быть,и не надо.
И только недавно научилась возвращать память системе.
Так что удивляться нечему.
Если в системе куча свободной памяти,то зачем процессу ее возвращать,если она может понадобиться ?
72 Chai Nic
 
08.04.23
16:21
(71) "зачем процессу ее возвращать,если она может понадобиться"
Оголтелый эгоизм. Процесс должен понимать, что он в системе не один, и память может понадобиться ещё кому-то. Внезапно.
73 magicSan
 
08.04.23
16:46
(71) нет, ставил недавно по приколу сонаркуб, малокушает ява
74 ДедМорроз
 
08.04.23
17:38
(73) так накорми и проверь - вернет съеденное или нет.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn