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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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