学习笔记类对象的内存释放

Posted SAP剑客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记类对象的内存释放相关的知识,希望对你有一定的参考价值。

类对象的内存释放

整理转自—《SAP ABAP 面向对象程序设计(原则、模式及实践)》

类对象与其他数据变量一样,都是要占据程序内存的,如果确定后续程序不会再使用对象实例,我们就可以删除对象实例,释放内存。SAP ABAP中对于不再使用的类对象实例使用垃圾收集器(Garbage Collector)删除。

ABAP OOP其实跟Java一样,不必主动删除和释放对象,虚拟机的垃圾收集机制会帮助我们清理和收集对象内存。

清除类对象可以使用”CLEAR”和”FREE”操作,将类对象设置为空值(NULL), 清除对象引用之后,系统并不会立即释放对象所占的内存空间,而是触发垃圾收集机制,由ABAP的GC(即垃圾收集器)在系统的内部调度下负责回收内存,回收的时机由系统掌握。

当然ABAP OOP也提供了系统垃圾清除语句:

CL_ABAP_MEMORY_UTILITIES=>DO_GARBAGE_COLLECTION( ).

上述语句可以主动调用ABAP的垃圾收集机制,释放系统内存资源。

【示例程序】

我们可以使用系统内置的方法获取内存的使用情况:

CL_ABAP_MEMORY_UTILITIES=>GET_TOTAL_USED_SIZE(  IMPORTING SIZE = DATA(LV_INIT_SIZE) ).

也可以通过程序运行时Debug中的内存分析(Memory Analysis)工具获取内存使用情况。

Tip:

以上是关于学习笔记类对象的内存释放的主要内容,如果未能解决你的问题,请参考以下文章

jvm学习笔记一(垃圾回收算法)

Android :安卓学习笔记之事件内存泄露 的简单理解

[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第九章 内存管理

ARC简介和注意事项(学习笔记1)

python cookbook第三版学习笔记十三:类和对象代理类以及内存回收

[学习笔记]Java程序运行机制及运行过程