通过一个简单的ABAP报表窥探ABAP内存分配和管理机制
发布日期:2021-06-30 14:06:13 浏览次数:2 分类:技术文章

本文共 1431 字,大约阅读时间需要 4 分钟。

REPORT zhelloworld.PARAMETERS: clear TYPE c as CHECKBOX DEFAULT abap_false.TYPES: tt_table TYPE TABLE OF tadir WITH KEY pgmid object.DATA: lt_result TYPE TABLE OF tadir,      lt_total  TYPE TABLE OF tadir,      lr_result TYPE REF TO tt_table.DATA: c1 TYPE cursor.OPEN CURSOR @c1 FOR SELECT * FROM tadir.DO.  WRITE: / |Round: { sy-index } | COLOR COL_NEGATIVE.  CREATE DATA lr_result.  FETCH NEXT CURSOR @c1 INTO TABLE @lr_result->* PACKAGE SIZE 800000.  IF sy-subrc <> 0.    EXIT.  ENDIF.  APPEND LINES OF lr_result->* TO lt_total.  cl_abap_memory_utilities=>get_memory_size_of_object( EXPORTING object = lt_total      IMPORTING        bound_size_alloc = DATA(bound_alloc)        bound_size_used = DATA(bound_used) ).  WRITE: / 'bound alloc:' , bound_alloc.  WRITE: / 'bound used:' , bound_used.  cl_abap_memory_utilities=>get_total_used_size( IMPORTING size = DATA(lv_before_size) ).  WRITE: / |Total size before GC: { lv_before_size }| COLOR COL_POSITIVE.  IF clear = abap_true.     CLEAR: lr_result->*, lt_result, lr_result.  ENDIF.  "cl_abap_memory_utilities=>do_garbage_collection( ).  cl_abap_memory_utilities=>get_total_used_size( IMPORTING size = DATA(lv_after_size) ).  WRITE: / |Total size after GC: { lv_after_size }| COLOR COL_GROUP.  DATA(rate) = ( lv_before_size - lv_after_size ) * 100 / lv_before_size.  WRITE: / |Freed rate: { rate }%| COLOR COL_TOTAL.ENDDO.WRITE: / lines( lt_total ).

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载地址:https://jerry.blog.csdn.net/article/details/103998696 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:ABAP里的软引用(weak reference)的用法
下一篇:使用cl_crm_queryaui_run_btil触发SAP CRM One Order搜索

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月23日 00时08分44秒