powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
25 сообщений из 27, страница 1 из 2
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38819080
_Серега_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю импорт из текстового файла в справочник. В справочнике 5 текстовых полей.
После 5-10 мин работы-сообщение об ошибке: "недостаточно памяти". За это время в цикле добавляется 19 000 +- записей. В диспетчере задач Windows у процесса 1сv8 память постоянно увеличивается, доходит до 1,5 Гб и появляется сообщение об ошибке.
код программы:

Текст=Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ОЕМ);
Стр=Текст.ПрочитатьСтроку();
Пока СТР<>Неопределено Цикл
Стр=Текст.ПрочитатьСтроку();

//обработать
ЭлСпр=Справочники.Справочник1.СоздатьЭлемент();
//заполнить поля
ЭлСпр.Записать();
КонецЦикла;



даже без обработки строк и заполнения полей справочника память выделяется и не освобождается.Использую MsSql Server2008 r2, 1c v8.2.18.61
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38819191
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Серега_,

а ты на серве делаешь!?
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38819254
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Титов, а ты на серве делаешь!? А почему нет?
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38819260
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,

не понял вопроса!
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38819919
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текст=Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ОЕМ);
Стр=Текст.ПрочитатьСтроку();
Пока СТР<>Неопределено Цикл
Стр=Текст.ПрочитатьСтроку();
КонецЦикла;


Это вызывает обрушение?
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38820184
_Серега_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,

Как раз этот код и не приводит к постоянному выделению памяти.
Если в цикле выполнить добавление записи-график сразу ползет вверх.

ЭлСпр=Справочники.Справочник1.СоздатьЭлемент();
ЭлСпр.Записать();

Вообще, добавлять несколько миллионов записей по одной-это не правильно в принципе. В 1С есть способ пакетной загрузки данных?
Типа Select...Insert

Пробую решить задачу средствами MSSQL. Получается на три порядка быстрее.
В 1С за 10мин 15-20 тис. записей
На скл за 13 - 1.5 млн
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38820324
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В транзакции по 1000 записей добавляйте. Не должно вылетать.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38820510
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Серега_Выполняю импорт из текстового файла в справочник. В справочнике 5 текстовых полей.
После 5-10 мин работы-сообщение об ошибке: "недостаточно памяти". За это время в цикле добавляется 19 000 +- записей. В диспетчере задач Windows у процесса 1сv8 память постоянно увеличивается, доходит до 1,5 Гб и появляется сообщение об ошибке.
код программы:

Текст=Новый ЧтениеТекста(ИмяФайла, КодировкаТекста.ОЕМ);
Стр=Текст.ПрочитатьСтроку();
Пока СТР<>Неопределено Цикл
Стр=Текст.ПрочитатьСтроку();

//обработать
ЭлСпр=Справочники.Справочник1.СоздатьЭлемент();
//заполнить поля
ЭлСпр.Записать();
КонецЦикла;



даже без обработки строк и заполнения полей справочника память выделяется и не освобождается.Использую MsSql Server2008 r2, 1c v8.2.18.61

все просто. зацикл идет и все!
надо так:

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайла);

Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(НомерСтроки);
//обработать
ЭлСпр=Справочники.Справочник1.СоздатьЭлемент();
//заполнить поля
ЭлСпр.Записать();
КонецЦикла;
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38820767
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamaco, что такое зацикл?

и чем пример автора отличается от канонического написанного в хелпе?
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38820930
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сwamaco, что такое зацикл?

и чем пример автора отличается от канонического написанного в хелпе?

зацикл - это зацикливание цикла!

Стр=Текст.ПрочитатьСтроку();
Пока СТР<>Неопределено Цикл
Стр=Текст.ПрочитатьСтроку();

2 раза читает строку...
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38820949
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamaco, а зацикливание то где? у автора ошибка в цикле только в том, что чтение следующей строки должно быть в конце цикла а не в начале.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821219
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerwamaco, а зацикливание то где? у автора ошибка в цикле только в том, что чтение следующей строки должно быть в конце цикла а не в начале.+1.

Насколько я понимаю у автора просто не читается первая строка. А все остальные замечательно читаются.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821337
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1с,

думаю он просто пропускает заголовки. Но вместо завершения цикла получит ошибку, обратившись через точку к переменной Неопределено.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821358
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHDPПрограммист 1с,

думаю он просто пропускает заголовки. Но вместо завершения цикла получит ошибку, обратившись через точку к переменной Неопределено.Но тогда он не ругался бы об ошибке переполнение памяти. А последний элемент просто создался с пустым наименованием.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821362
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На память он ругается в середине цикла. До этой ошибки он ещё не дошёл. Хотя конечно он может и дважды проверять на Неопределено, но это уже изврат.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821364
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в любом случае, в этом коде память не должна отжираться. Наверное нам чего-то не договаривают.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821832
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerв любом случае, в этом коде память не должна отжираться. Наверное нам чего-то не договаривают.Как вариант открытая транзакция. Либо версия платформы?
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821952
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerwamaco, а зацикливание то где? у автора ошибка в цикле только в том, что чтение следующей строки должно быть в конце цикла а не в начале.

я не сказал, что зацикливание видно в его представленном коде. я просто уверен, что пожирание памяти связано
с бесконечным циклом, в куске кода, который автор не показывает!
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38821953
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист 1сjavapeckerwamaco, а зацикливание то где? у автора ошибка в цикле только в том, что чтение следующей строки должно быть в конце цикла а не в начале.+1.

Насколько я понимаю у автора просто не читается первая строка. А все остальные замечательно читаются.

поэтому я и предложил вариант

Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайла);

Для НомерСтроки = 1 По Текст.КоличествоСтрок() Цикл
Стр = Текст.ПолучитьСтроку(НомерСтроки);
//обработать
ЭлСпр=Справочники.Справочник1.СоздатьЭлемент();
//заполнить поля
ЭлСпр.Записать();
КонецЦикла;

он понятнее и исключает потенциальные логические ошибки новичков!
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38822047
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamaco,
он понятнее и исключает потенциальные логические ошибки новичков!Понятнее - это субъективно. А вот то что исключает ошибки это верно - кроме этих двух строчек других ошибок и не надоТекст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайла); 3 гига в память попробуем загнать сразу, и даже до цикла не дойдем). Да и бесконечный цикл вовсе не означает утечку памяти.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38822083
wamaco
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerwamaco,
Текст = Новый ТекстовыйДокумент;
Текст.Прочитать(ИмяФайла); 3 гига в память попробуем загнать сразу, и даже до цикла не дойдем). Да и бесконечный цикл вовсе не означает утечку памяти.

строчка Текст.Прочитать(ИмяФайла); - не означает, что мы "загоняем" все 3 Гига в память!

"Бесконечный цикл вовсе не означает утечку памяти." - полностью согласен! Но у 1С это так!
Попробуйте сделать бесконечный цикл и посмотрите Диспетчер задач, как растет объем используемой памяти!
Это сугубо эксперимент. Почему так, не хочу даже понимать и разбираться!
Поэтому и предположил такой расклад!
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38822119
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamaco,

нифига подобного у 1С не всегда это так!!! я рекурсией рассчитываю себестоимость память как была на одном уровне так и осталась!
мне кажется что здесь проблема кроется в переменной СТР автора где-то что-то в обработке он накосячил.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38822243
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wamaco,строчка Текст.Прочитать(ИмяФайла); - не означает, что мы "загоняем" все 3 Гига в память! Очень интересно, что же это по вашему означает. Попробуйте сделать бесконечный цикл и посмотрите Диспетчер задач, как растет объем используемой памяти!
Это сугубо эксперимент Я то как раз пробовал, и справку читал.
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38822245
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вычленить что конкретно вызывает утечку удалось? чтение файла или создание запись элементов?

первое можно вычленить из списка подозреваемых заменив на чтение через fso
...
Рейтинг: 0 / 0
Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
    #38822249
Последний выдох ГПЖ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помню были еще какие-то феньки влекущие за собой утечку но там надо было устроить "зацикливание" из кода и реквизитов формы
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / [игнор отключен] [закрыт для гостей] / Недостаточно памяти при выполнении импорта текстового файла большого размера (3 ГБ)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]