Текущее время: Чт, сен 12 2024, 15:06

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Нехватка памяти и if_ixml
СообщениеДобавлено: Чт, июл 25 2024, 14:15 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 303
В системе реализован ФМ по загрузке данных из excel
Делается это через if_ixml, if_ixml_document, if_ixml_stream_factory и т.д. и т.п.

Всё работает, но если грузить большой Excel файл, то вылазит ошибка: Недостаток памяти, перед перерывом завершите работу транзакции

Выяснил что при чтении if_ixml объем памяти увеличивается до 4 Гб (по сравнению с 400 Мб до создания этих объектов). Но после того как делается FREE этих объектов, память всё равно не освобождается.
Само увелечение используемой памяти происходит при
Code:
lif_ixml_parser->parse( )


Как-то можно её освободить чтобы система не ругалась?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нехватка памяти и if_ixml
СообщениеДобавлено: Пт, июл 26 2024, 10:27 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1252
1) может быть лучше заменить чтение экселя на чтение через CL_FDT_XL_SPREADSHEET? (пример)
2) та память, которую процесс занял не освобождается до окончания процесса. Т.е. создал таблицу 100мб, память процесса вырастает на 100 мб. Сделал free для этой таблы - память занятая процессом останется без изменений. Но при этом, у тебя внутри процесса освободится 100мб, которые можно использовать под другие переменные внутри этого же процесса.
3) лучше посмотреть через отладчик или мемори инспектор что там в памяти так много ест. И занимать память только по мере необходимости
4) для объектов или Ref переменных, стоит учесть, что они существуют в памяти, пока на них существует хотя бы 1 ссылка. Т.е. стоит убедиться что все ссылки на объекты высвобождаются, если ты хочешь их зачистить

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нехватка памяти и if_ixml
СообщениеДобавлено: Пт, июл 26 2024, 12:16 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Чт, дек 21 2006, 16:38
Сообщения: 303
Переписать не вариант. Но в качестве решение было решено запускать отдельный процесс для чтения. Процесс читает, возвращает данные и освобождает всю выделенную память. Все довольны, все танцуют :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Нехватка памяти и if_ixml
СообщениеДобавлено: Пн, авг 05 2024, 07:47 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Пт, сен 07 2007, 07:53
Сообщения: 1396
У процесса в SAPe есть собственное пространство памяти. При потребности новой памяти это пространство растет. Но этот рост возможен только до определенного лимита. Далее, если есть запросы на выделение доп.памяти, эта память выделяется в разделе общей памяти SAP. Работа в таком режиме считается нежелательным, поэтому этого процесс получает флаг PRIV (его видно в SM50), и запускается обратный отсчет, по истечении которого процесс будет прибит системой. Если это произойдет, то такой процесс не попадает в список дампов (ST22).

Сообщение "Недостаток памяти, перед перерывом завершите работу транзакции" появляется в момент перехода процесса в статус PRIV. Считается, что пользователь должен как можно быстрее завершить работу с этим приложением.

Поэтому, отвечая на исходный вопрос - как освободить память, чтобы система не ругалась. Ответ - никак. Система ругается в момент задействования общей памяти, а не по причине ее не освобождения. Не хотите получать такое сообщение, переписываете приложение так, чтобы оно использовало меньше памяти.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Korvax, Наташа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB