Текущее время: Сб, авг 02 2025, 18:27

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Пт, янв 30 2009, 17:13 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Объявлена SORT-внутренняя таблица. Элементом таблицы явлется набор простых полей. Заливаю в нее данные. Получается примерно размер 25000x154 (строки x байты). Захожу в Отладку -> Переход к -> Статутсы -> Память... Короче выясняю, что занимает она 5 000 000 байт. Далее использую подпрограмму в которой использую в цикле таблицу для поиска строки.
Вызываю подпрограмму, передавая таблицу в качестве параметра (ссылки)... после N-го количества вызова смотрю параметры памяти 11 000 000 для этой таблице при том же размере 25000 x 154 (она ведь не меняется). Вопрос - что происходит? Куда память тратится? :roll:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Пт, янв 30 2009, 17:28 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Было

Code:

loop at p_st into reference p_ref
where
    id = p_id and
    datefrom <= p_actual_date and
    dateto >= p_actual_date.

    clear sy-subrc.
    return.
  endloop.


поменял на

Code:
loop at p_st assigning <st>
  where
    id = p_id and
    datefrom <= p_actual_date and
    dateto >= p_actual_date.

    get reference of <st> into p_ref.

    clear sy-subrc.
    return.
  endloop.


и память жраться перестала. Чего за фигня? Кто объяснит? :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Сб, янв 31 2009, 16:05 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
murmur написал:
Было

Code:

loop at p_st into reference p_ref
...


поменял на

Code:
loop at p_st assigning <st>
...


и память жраться перестала. Чего за фигня? Кто объяснит? :(
SAP может объяснить. Думаю что имеет смысл выставить сообщение, т.к. вполне возможно это баг ядра.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Пн, фев 02 2009, 16:44 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
вероятно память выделяется под указатель, причем в контексте [объекта-]таблицы,
т.е. p_ref является переменной указателем, его можно скопировать,
после выхода из loop указатель хранит верный адрес,

а под field-symbols (ссылка) память не выделяется, а как бы именуется адрес в памяти.

почему в контексте таблицы, наверное мусорщик (gc) считает указатели,
и при удалении строки или таблицы сбрасывает соотв указатели.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Пн, фев 02 2009, 18:01 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Вс, янв 11 2009, 14:41
Сообщения: 902
Откуда: Москва
Пол: Мужской
Как-то весьма неубедительно... про указатели


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Вт, фев 03 2009, 13:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
murmur написал:
Как-то весьма неубедительно... про указатели

Тогда полный код в студию в котором используется reference p_ref

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Память почему-то жрется под внутреннюю таблицу
СообщениеДобавлено: Вт, фев 03 2009, 20:43 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
murmur написал:
Как-то весьма неубедительно... про указатели

как бы это.. представьте smart pointer с подсчетом ссылок в контексте внутренней таблицы.

Code:
loop at table reference into ref.
  " попробуйте вставить в конце цикла и посмотрите потребление памяти
  ref2 = ref.
  free ref.
endloop.

Code:
loop at table into line/assigning <line>.
  get reference of line/<line> into ref.   " возможно (проверьте) менеджер памяти не увязывает поле/ссылку с таблицей
                                           " и выделяет память под ref не в контексте таблицы а отдельно


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

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


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

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


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

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