Имя: Пароль:
1C
1С v8
Техножурнал и событие LEAKS
0 Fragster
 
модератор
27.08.13
13:08
СправочникВыборка = Справочники.Номенклатура.Выбрать();

Сч = 0;
Пока Выборка.Следующий И Сч < 100 Цикл
  Сч = Сч + 1;
  Если Сч%2 = 0 Тогда
    ОбъектИзВыборки = Выборка.ПолучитьОбъект();
  Иначе
    ОбъектИзСсылки = Выборка.Ссылка.ПолучитьОбъект();
  КонецЕсли;
КонецЦикла;


Если включить в техножурнале отслеживание утечек, то видно, что Выборка.Ссылка.ПолучитьОбъект(); - вызывает событие leak, а Выборка.ПолучитьОбъект(); - нет. Как сделать так, чтобы 1ска не кэшировала объекты, полученные из ссылки?
1 Maxus43
 
27.08.13
13:09
Не писать Выборка.Ссылка.ПолучитьОбъект()? ибо не имеет смысла и попахивает быдлокодом в данном случае :)
2 Fragster
 
модератор
27.08.13
13:12
(1) если выборка из результата запроса - то тоже вызывает... любое получение из объекта с типом ...Ссылка - вызывает, а из ...Выборка - нет
3 Maxus43
 
27.08.13
13:14
А так?
мСсылка = Выборка.Ссылка;
ОбъектИзСсылки = мСсылка.ПолучитьОбъект();
?
4 Fragster
 
модератор
27.08.13
13:20
(3) так тоже есть LEAK
5 Fragster
 
модератор
27.08.13
13:31
и ведь при выполнении кода, если посмотреть в диспетчер задач - видно что память, скушенная 1ской в случае если использовать Выборка.ПолучитьОбъект() - не растет, а если Ссылка.ПолучитьОбъект() - растет :(
6 Kyon8
 
27.08.13
13:32
Как вариант - Выборка.ПолучитьОбъект() получает ранее уже считанный в процессе выборки объект.
7 Fragster
 
модератор
27.08.13
13:33
(6) техножурнал не показывает. и память не растет в диспетчере задач.
8 Maxus43
 
27.08.13
13:37
(7) потом память очищается мусорщиком?
9 Kyon8
 
27.08.13
13:38
Ну значит выборка оптимизирована по расходованию памяти как-то, в справке же пишут "выбирает их порциями из базы данных". И все свойства для создания объекта уже есть в выборке по идее.
10 Maxus43
 
27.08.13
13:38
или LEAK как раз показывает реальную утечку неочищаемую?
Тогда наверно на партнёрку написать надо бы, и приложить ТЖ
11 Fragster
 
модератор
27.08.13
13:45
вот тут: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=606668&threadtype=0
некто Радченко, фирма 1с пишет, что это норма. Проблема только в том, что 1ска так и висит, не отдавая память (продолжает работу, да, но вот завершается, например, потом очень долго, сколько тем на мисте про это. Или несколько 1сок и альттаб - тоже плохо работает, из свопа вылезает. Да и вообще - неприятненько).
12 Maxus43
 
27.08.13
13:49
(11) последние 2 поста там же говорят что всё хорошо, растёт по началу процесс только некоторое время, потом не растёт и в завершении вобще освобождает память
13 Sammo
 
27.08.13
14:01
А объем откущенной памяти в выборке в выборке запроса одинаковый?
А то есть подозрение, что Выборка содержит в себе Объект сразу и поэтому память не растет.
А выборка запроса получает из базы
14 Fragster
 
модератор
27.08.13
14:14
(12) у меня несколько часов висела - так и не вернула
15 Maxus43
 
27.08.13
14:31
(14) на партнёрку попробуй закинь, а лучше там поискать сначала конечно