Performance 측정시 Peak Memory 이슈

얼마전 서로 다른 basis – NW6.40과 NW7.10 – 에서 돌아가는 application의 performance를 측정 중, 특정 process에서 memory peak 수치가 계속 30% 이상 높게 나오는 현상을 발견했다.
며칠이 지난 후에서야 Memory Inspector를 통해 그 원인을 알아 낼 수 있었다. 즉, 실제 사용량에 비해서 과다하게 많은 memory가 allocation 되어 있던 것. 소스를 보니,

DELETE s_tas_item
WHERE scope_write <> con_scope_three
...
AND scope_read <> con_scope_one.

상기와 같은 internal table의 데이터를 삭제하는 부분이 있는데 NW7.10에서는 제깍제깍 반환을 하는 반면 NW 6.40에서는 오랫동안 잡고 있었다. 아래 Line을 추가하고 나니 더 이상 이슈가 생기질 않았다.

IF s_tas_item[] IS INITIAL.
FREE s_tas_item.
ENDIF.