浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题试读版
2023-01-08 本文已影响0人
_扫地僧_
我们用一个简单的 ABAP 程序来引出本文的讲解。
ABAP 系统的 TADIR 这张数据库表,作用很像 Windows 操作系统的注册表。我们在 Windows 系统里每安装一个软件,会在注册表里写入一些对应的记录。
同理,每次在 ABAP 系统创建新的『全局』资源,比如 ABAP 类,ABAP Function Module,ABAP 字典对象等等,就会在 TADIR 表里写入记录。在我的一个 ABAP 系统里,这张表有 200 多万条数据。
更多详情参考我的文章:SAPGUI 和 Windows 操作系统里的注册表。
看下面这个简单的 ABAP 程序:我们把数据库表 TADIR 的全部记录读取出来,存放到内表 lt_tadir
里,然后在一个无限循环里,将这个内表的全部内容,拷贝到另一张内表 lt_result
里。
水满则溢,月盈则亏。所以内表 lt_result 不可能无限容纳来自其他内表的内容,什么时候会被 "撑爆"
呢?
实际运行一下便知。
本文余下部分,介绍这个包含无限循环的 ABAP 应用,执行后会出现的情况和背后的知识点。