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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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