|
Рисунки забивают память | ☑ | ||
---|---|---|---|---|
0
Spider244
25.10.11
✎
12:20
|
Всем Привет!
Проблема следующая. Есть отчет (обычный, без использования СКД). Макет отчета содержит рисунки. Рисунки заполняются программно. Вот фрагмент кода: КартинкаВПамяти=Выборка.Флаг.ДанныеФайла.Получить(); Область.Рисунки.Флаг.Картинка=Новый Картинка(КартинкаВПамяти); ------------------------------------------------------------- ТД.Вывести(Область); Здесь Выборка - выборка из результата запроса; Флаг - справочник, в котором хранятся рисунки; ДанныеФайла - реквизит справочника типа ХранилищеЗначения, Область.Рисунки.Флаг - рисунок в макете. Алгоритм работает прекрасно. Все рисунки отображаются, но проблема в том что оперативная память забивается напрочь. Не сразу, а по мере того как отчет построишь несколько раз. То есть при перестроении отчета (кнопка Сформировать на форме) картинки не удаляются из памяти, хотя табличный документ на форме я очищаю (метод Очистить()). Как это исправить? Спасибо за внимание! P.S. Конфа самописная. Платформа 8.2.14. |
|||
1
vicof
25.10.11
✎
12:22
|
Запоминай свои картинки один раз, а потом их выводи.
|
|||
2
H A D G E H O G s
25.10.11
✎
12:22
|
Очисть картинки в таб документе предварительно.
|
|||
3
Spider244
25.10.11
✎
12:26
|
(1) Отчет строится с различными параметрами, поэтому картинки каждый раз разные. Так что это не вариант.
(2) Пробовал через метод Очистить() коллекции рисунков табличного документа. Результат нулевой. |
|||
4
Lama12
25.10.11
✎
12:27
|
(3) Купить больше памяти.
|
|||
5
Spider244
25.10.11
✎
12:28
|
(4) Очень смешно ))))))))))))
|
|||
6
Axel2009
25.10.11
✎
12:31
|
а после закрытия открытия формы - память очищается?
|
|||
7
Spider244
25.10.11
✎
12:34
|
(6) Нет
|
|||
8
Axel2009
25.10.11
✎
12:36
|
а если для каждого рисунка писать = Новый Картинка;?
|
|||
9
Spider244
25.10.11
✎
12:37
|
(8) Это как? У меня вроде так и есть.
|
|||
10
Axel2009
25.10.11
✎
12:40
|
(9) Новый Картинка - фактически пустая картинка. прежде чем очищать таб док пройтись по рисункам и присвоить им это значение
|
|||
11
Spider244
25.10.11
✎
12:46
|
(10) Попробовал так:
Для Ном=0 По Результат.Рисунки.Количество()-1 Цикл Результат.Рисунки[Ном]=Новый Картинка; КонецЦикла; Вылетает с ошибкой: Индексированное значение доступно только для чтения |
|||
12
Spider244
25.10.11
✎
12:52
|
Вот так рисунки в документе очищаются, но память по прежнему не освобождается:
Для Ном=0 По Результат.Рисунки.Количество()-1 Цикл Рис=Результат.Рисунки.Получить(Ном); Рис.Картинка=Новый Картинка; КонецЦикла; |
|||
13
Spider244
25.10.11
✎
12:57
|
Заметил ещё что память забивается в момент отображения картинки на экране. То есть, если отчет большой и весь не умещается на экране, то при прокрутке его вниз занимаемая память начинает увеличиваться.
|
|||
14
Spider244
25.10.11
✎
13:02
|
Up.
|
|||
15
Spider244
25.10.11
✎
14:06
|
Вверх.
|
|||
16
Иван Болван
25.10.11
✎
14:33
|
8.2 ещё сырая
|
|||
17
Spider244
25.10.11
✎
14:39
|
(16) Ну не на столько же.
|
|||
18
Axel2009
25.10.11
✎
14:39
|
(17) да они только в 8.2.14 научились с монохромными рисунками работать.
|
|||
19
Spider244
25.10.11
✎
14:43
|
Короче все предлагают сдаться?
|
|||
20
Axel2009
25.10.11
✎
14:48
|
уменьшай размер рисунков. у нас прайсы подбирают по картинкам в 8.2.13. и проблем вроде не было. но мы сделали ограничение на размер файла, он получается порядка 70-100КБ
|
|||
21
qeos
25.10.11
✎
14:50
|
(12) чейто она должна очищаться?
во-вторых ты создаешь одинаковые рисунки? или _все_ "Новый Картинка(КартинкаВПамяти)" разные? |
|||
22
Spider244
25.10.11
✎
14:52
|
(21) Все разные.
|
|||
23
qeos
25.10.11
✎
14:53
|
(22) думаю надо Рис.Картинка=Неопределено;
|
|||
24
Spider244
25.10.11
✎
14:53
|
(20) У меня рисунки в среднем порядка 20КБ весят, куда уж меньше.
|
|||
25
qeos
25.10.11
✎
14:55
|
(24) тогда грузи не все картинки, а только выводимые..
|
|||
26
Spider244
25.10.11
✎
14:56
|
(25) Они все выводимые.
|
|||
27
qeos
25.10.11
✎
14:58
|
(26) все? сколько их? 20?
|
|||
28
Spider244
25.10.11
✎
15:02
|
(27) В базе порядка 1500 картинок. Запрос можно составить таким образом что и все придется выводить. Сейчас я тестирую запрос, который выдает 40 картинок.
|
|||
29
Spider244
25.10.11
✎
15:18
|
Up.
|
|||
30
Axel2009
25.10.11
✎
15:21
|
Для Ном=0 По Результат.Рисунки.Количество()-1 Цикл
Результат.Рисунки[Ном].Картинка=Новый Картинка; КонецЦикла; а так? |
|||
31
Axel2009
25.10.11
✎
15:22
|
(30)+сори, не заметил, что уже есть
|
|||
32
kuza2000
25.10.11
✎
15:30
|
По описанию очень похоже на типичную утечку памяти. Необходимо сообщить разработчикам платформы, что бы пофиксили этот баг.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |