1С 8.3 жрет память #670862


#0 by alexei366
Есть у меня форма, на ней кнопка, действие выполняется на клиенте, грузится картинка с диска, далее во временное хранилище и в реквизит строка, который отображается как поле картинки. Также перед покладкой во врем хранилище я его сначала очищаю. В итлге жмем на кнопу 100 раз, в диспетчере задач наша 1С уже щанимает около 500 МБ, закрываем форму а память не освобождается. В чем трабла, что не так я делаю?
#1 by fmrlex
А 8.2 как себя ведет?
#2 by alexei366
Не пробывал, думаю также если по приведенному примеру
#3 by ДенисЧ
1с жрёт память, а вы кактусы...
#4 by arsik
А бубен? Бубен то тряс?
#5 by Gorgol
Если на клиенте много свободной памяти, то почему бы и нет. Попробуй сделать это же в виртуалке, где памяти у всех приложений будет 200 метров.
#6 by fmrlex
Ну дык попробуй. Запусти под 8.2 свое поделие.
#7 by Лефмихалыч
Сердитый мужик в аптеке: Ваши презервативы рвутся! Голос из очереди: А еще мнутся и гнутся... ЗЫ вы как-то не так и не то делаете просто
#8 by alexei366
Так чо теперь пусть хоть 2 Гига занимает, чтоб картинки полистать из каталога? этож бред
#9 by alexei366
Так давай скажи как правильно, яж этого и хочу
#10 by pmb
картинка - двоичные данные? Переменная в которую грузиться картинка не очищается
#11 by alexei366
Корочь, если не ложить получаемый адрес хранилища в реквизит (то есть не выводить картинку), то память жрется соответствующая размеру картинки помноженному на 10 наверно, но не на 500 как в случае если выводить
#12 by alexei366
Это локальная переменная функции
#13 by pmb
она и не очищается. Очисть ее явно в конце процедуры
#14 by H A D G E H O G s
Расслабтесь. Потом, когда дойдет до 800 метров - она тупо не будет отображать новые картинки, а потом через пару десятков секунд сбросит память до 50 метров.
#15 by Fragster
мусорщик 1с ну очень не любит циклические ссылки
#16 by Fragster
хз, как в 8.3, может бага, но вообще - в техножурнале можно отследить, на каких конкретно строчках и переменных течет.
#17 by alexei366
Что ты конкретно имел ввиду
#18 by pmb
как это сделать? События LEAKS и MEM только для сервера выводятся (по крайней мере в 8.2)
#19 by pmb
покажи код модуля
#20 by alexei366
Держи
#22 by alexei366
Ну пипец, в натуре работает, типа "а = Неопределенно" эт у нас а.Dispose в c#. Я то думал оно должно какнить само раз объявленно в рамках функции, да и при закрытии тож нифига блин
#23 by alexei366
Ща попробую с выводом картинки
#24 by Asmody
вот такой в 1Ске х.вый сборщик мусора
#25 by hhhh
если написал значит поместил во временное хранилище. Значит, не должна эта память освобождаться. ВСё правильно делает.
#26 by Asmody
а вот тут должна? УдалитьИзВременногоХранилища(ПолеКартинку2)
#27 by Fragster
на клиенте тоже есть техножурнал, только тссс!
#28 by alexei366
А метод удалить ты не видел в моем коде?
#29 by Фрэнки
что-то очень похоже, что условие забито криво. ПолеКартинку и ПолеКартинку2 это разные переменные
#30 by alexei366
Такс если выводить картинку, то он начинает на каждый щелчок по 50 метров жрать, но както всетаки потом очищает, кидает её периодически с 700 Метров до 200
#31 by alexei366
Да знаю знаю, я потом исправил, принимай что условие верное было, оно вообще нужно чтоб первый раз с исключением не вылетело
#32 by pmb
если честно то поиск утечек памяти в нем криво работает - выводит кучу событий, которые "потенциально" могут быть утечкой. В то же время была похожая ситуация как у автора, так событие подобное Новый ДвоичныеДанные("C:12jpg.jpg") вообще не попало в журнал
#33 by alexei366
Ну вроде чуток понятно стало, с переменными в теле функции надо самому разбираться типа приравнивая их к Неопределенно, а с элементом формы сборщик мусора разбирается (Вроде так)
#34 by Фрэнки
угу. а вообще все на 7.7 еще началось. когда в любом маломальски критичном по памяти месте, при выходе из контекста считалось хорошим тоном выполнить А=0 , которое в 8-ке чаще всего заменяют на А=Неопределено. По сути, это просто назначение нового указателя в памяти... Исходники надо смотреть, чтоб выводы делать, есть деструкторы объектов и как собирается мусор при выдаче переменной нового объекта. А=Неопределено это тоже операция, которая из-за преобразования типа тянет за собой деструктор для прежнего объекта и новый конструктор для текущего присвоения.
#35 by Фрэнки
И на элементы форм не сборщик мусора вешается, а автоматический вызов деструкторов при удалении родителя. Т.е. я к тому, что это не совсем настоящие сборщики.
#36 by alexei366
Ну родитель у элемента это форма, а её я не закрываю
#37 by hhhh
так ведь там бред написан причем ПОлеКартинку нигде не видно, что оно равно пробелу поэтому я и не обратил внимание на это удалить, потому что оно выполнится с вероятностью 10%.
#38 by alexei366
Это реквизит формы типа строка
#39 by alexei366
И оно выполняется, я проверял
#40 by Фрэнки
тогда это ответ на то, почему встроенная "сборка мусора" не работает.
#41 by Pilokarpios
у меня IIS7 уже два раза упал когда я 1с83 насиловал!!! он у меня для тестов, всего 3 гига оперативы, но всегда тянул небольшое количество юзеров, а то прям захлебнулся бедняга, чую еще сырого много!
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С