Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
22 Янв 2018, 05:33
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Утечка памяти при использовании Native API  (Прочитано 8925 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PowerLord

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-20
  • Сайт: 
  • Профессия: Программист 1С
Всем привет.
Я использую внешнюю компоненту, написанную на С++.
При вызове процедур и функций этой библиотеки происходит утечка памяти! для примера вызывал процедуру, в которой ничего не происходило - и всё равно была утечка. за 1000000 вызовов около 30 метров оперативки захватывается 1С :(
У кого нибудь была такая проблема?
Мне требуется написать функцию, которая будет вызываться очень много раз, поэтому это очень критично.


Оффлайн Yura063

  • *****
  • Сообщений: 1045
  • РЕПУТАЦИЯ: 136
  • КПД: 13%
  • Регистрация: 2010-11-15
  • Сайт: yuis.ru
  • Профессия: Программист 1С
Тут вам не кто не поможет так как такой библиотеки не у кого нет! тут вам помогут с написание процедур и функций! А если так беспокоитесь о памяти то может стоит ее увеличить?
Помогли, отблагодари!

Оффлайн PowerLord

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-20
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
Тут вам не кто не поможет так как такой библиотеки не у кого нет! тут вам помогут с написание процедур и функций! А если так беспокоитесь о памяти то может стоит ее увеличить?

Вообще то я интересовался, не было ли у кого-нибудь похожих ситуаций, связанных с использованием библиотек, написанных по технологии Native API.

Зря вы считаете что увеличение памяти решит все проблемы, связанные с её утечкой.
При 100000000 обращений к библиотечной функции у меня 1С вылетела с ошибкой нехватки памяти (4 гб оперативки)!

Если вы знаете где могут помочь, дайте ссылку.

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Как вы ее вызываете в 1С ?
Добавлено: 20 Фев 2013, 09:56

Функцию из библиотеки
Добавлено: 20 Фев 2013, 09:57

Покажите полный код -
инициализацию библиотеки
Вызов функции
Завершение работы модуля
Добавлено: 20 Фев 2013, 10:02

Есть 2 предположения почему течет память у 1С
1. Избыточный вызов конструктора объекта(и не используется деструктор)
2. СТЕК 1С
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн PowerLord

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-20
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
Как вы ее вызываете в 1С ?
	Если ПодключитьВнешнююКомпоненту("ОбщийМакет.AddInNative", "Comp") Тогда 
Попытка
глAddInNative = Новый("AddIn.Comp.AddInNativeExtension");
Исключение
Сообщить("Фейл");
КонецПопытки;
КонецЕсли;

ТаймерСтарт = глAddInNative.Milliseconds;
Для Счетчик = 1 По 100000 Цикл
глAddInNative.Sleep(1);
Сообщить(Счетчик);
КонецЦикла;
ТаймерСтоп = глAddInNative.Milliseconds;
глAddInNative = Неопределено;
Сообщить("Затрачено времени С++: " + (ТаймерСтоп - ТаймерСтарт));
Функция Sleep отправляет 1С "спать"на 1 миллисекунду.
Milliseconds - текущее системное время до миллисекунд. вроде

Последний раз редактировалось: PowerLord; 20 Фев 2013, 10:23

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Супер. Думаю в такой реализации проблем с утечкой у вас не возникнет.

Как вы организовали 1000000 вызовов?

Просто запустив это в цикле?
 
глAddInNative = глПеременные.AddInNative();
    Если глAddInNative = Неопределено Тогда Возврат КонецЕсли;
    глAddInNative.Sleep(Задержка);
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн PowerLord

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-20
  • Сайт: 
  • Профессия: Программист 1С
Я упростил код и выложил в предыдущем сообщении новый. просто там я не весь показал, подумал, вдруг там что-то левое было что могло память поесть, и написал заново.

Цитировать
Как вы организовали 1000000 вызовов?

Просто запустив это в цикле?
именно так
Добавлено: 20 Фев 2013, 10:27

Цитировать
Супер. Думаю в такой реализации проблем с утечкой у вас не возникнет.

Так возникают ведь :dfbbdrfb:
вчера около 4-х метров памяти терялось, сегодня уже 15. на 100000 вызовов
Добавлено: 20 Фев 2013, 10:30

Dethmontt, вы не знаете, можно ли как-либо "помочь" 1С освободить память?

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
А если из ЦИКЛА убрать?
Сообщить(Счетчик);
Добавлено: 20 Фев 2013, 10:35

А вы не думали в сторону чтобы сократить количество вызовов?
Добавлено: 20 Фев 2013, 10:37

На вот такую реализацию у меня затратилось больше 100 Мб памяти
Для Сч=1 По 1000000 Цикл 
Сообщить(Сч);
КонецЦикла;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2860
  • РЕПУТАЦИЯ: 547
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
Dethmontt, вы не знаете, можно ли как-либо "помочь" 1С освободить память?
1С делает это сама.
Как только модуль отработает все его переменные (не глобальные) будут очищены
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн PowerLord

  • *
  • Сообщений: 10
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-10-20
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
А если из ЦИКЛА убрать?
Сообщить(Счетчик);

Это я вывел чтобы видеть процесс выполнения. без него память тоже пропадает

Цитировать
А вы не думали в сторону чтобы сократить количество вызовов?
нельзя. Здесь, собственно, я привел функцию, никак не оперирующую памятью вне 1С. А нужно написать функцию, обрабатывающую строку (в 1С обработка строки, аналогичная обработке в С++, работала на 25% дольше чем в С++). а таких строк в центральной базе крупного предприятия ооочень много
Добавлено: 20 Фев 2013, 10:49

Цитировать
На вот такую реализацию у меня затратилось больше 100 Мб памяти
эх, криворукие разработчики 1С.

Dethmontt, а вы сами писали AddInNative внешние компоненты?


 

При открытии конфигурации ошибка чтения памяти. Помогите пожалуйста! очень срочн

Автор MKozzlikРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2649
Последний ответ 13 Дек 2011, 17:52
от aleksqqq
Как уменьшить расход памяти при создании/редактировании документов на сервере

Автор wpostaРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 1297
Последний ответ 17 Авг 2015, 16:06
от wposta
РИБ не хватает памяти при создании начального образа подчиненного узла

Автор CARtMENРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 535
Последний ответ 29 Июл 2017, 13:40
от CARtMEN
ЗУП При формировании СЗВ 6-4 за 1 квартал вылетает пишет недостаточно памяти

Автор natalil05Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 13
Просмотров: 8836
Последний ответ 08 Апр 2013, 20:07
от Dethmontt
Недостаточно памяти при сохранении графика в файл Excel

Автор Luzer1CРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 1931
Последний ответ 19 Май 2016, 20:50
от BuhRust

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
100 Сообщений
AIFrame
57 Сообщений
alex0402
29 Сообщений
kiksi
24 Сообщений
pavl_vs
24 Сообщений
alexandr_ll
17 Сообщений
Norfolk
16 Сообщений
andron81_81
16 Сообщений
KOI8-R
14 Сообщений
MuI_I_Ika MuI_I_Ika
13 Сообщений

* Кто онлайн

  • Точка Гостей: 294
  • Точка Скрытых: 0
  • Точка Пользователей: 3
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal