浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题试读版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题试读版相关的知识,希望对你有一定的参考价值。

​​浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题试读版​​


本专栏计划的文章数在 300 篇左右,到 2023年1月8日为止,目前已经更新了 78 篇,专栏完成度为 26%

笔者这套​​零基础快速学习 ABAP​​从 2021年4月10日写下第一篇文章以来,感谢广大学习者一如既往的支持。本教程计划花费 ​​150​​ 左右的篇幅,向大家详细介绍 SAP ABAP 开发的方方面面。

大家在学习教程过程中,如果有任何关于 SAP ABAP 开发方面想了解的内容,可以直接在教程各篇文章下评论留言,也可以在​​《零基础快速学习 ABAP 读者意见反馈和下一步写作计划表》​​里留言。我会将大家的意见统一汇总,作为我更新教程的内容参考来源之一。

零基础 ABAP 学习教程系列文章的目录

  • ​​0. 自学 ABAP 和自学 SAP 的差别​​
  • ​​1. ABAP 标准培训教程 BC400 学习笔记之一:ABAP 服务器的架构和一个典型的 ABAP 程序结构介绍​​
  • ​​2. ABAP 标准培训教程 BC400 学习笔记之二:Cross-client 和 Client-specific 的区别​​
  • ​​3. ABAP 标准培训教程 BC400 学习笔记之三:ABAP 编程语言的特性和基本构成要素​​
  • ​​4. ABAP 标准培训教程 BC400 学习笔记之四:ABAP 编程语言的数据类型​​
  • ​​5. ABAP 标准培训教程 BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号​​

ABAP 基础知识

  • ​​6. 通过实际的例子,介绍 SAP ABAP 里的 Repository Information System 的使用技巧​​
  • ​​7. ABAP function module 的使用​​
  • ​​8. ABAP subroutine 的定义和使用​​
  • ​​9. ABAP 中的变量和常量​​
  • ​​10. ABAP 编程语言中的系统字段(System Fields)​​
  • ​​11. 什么是 ABAP Field Symbol​​
  • ​​12. ABAP 引用类型介绍​​
  • ​​13. 最浅显易懂的 SAPGUI 里 ABAP 调试器的使用方法介绍​​
  • ​​14. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (上)​​
  • ​​15. 如何创建最简单的 ABAP 数据库表,以及编码从数据库表中读取数据 (下)​​
  • ​​16. 用 ABAP 读取本地文本文件内容​​
  • ​​17. 26 行 ABAP 代码使用 HTTP_GET 函数下载百度网站的首页数据​​
  • ​​18. ABAP 如何解析 JSON 数据​​
  • ​​19. 如何从本地文件里拷贝某个 ABAP 类到 SAP 系统​​
  • ​​20. 面向对象的 ABAP 编程初探 - 什么是类,实例,和 Public 方法​​
  • ​​21. SAP ABAP 报表的用户输入功能​​
  • ​​22. 使用 ABAP 事物码 SM59 创建 Destination 来读取外网的数据​​
  • ​​23. 通过一个具体的例子,讲解 SAP BDC 技术的使用步骤​​
  • ​​24. 从解读 BDC 自动生成的代码谈起,讲解 SAPGUI 的程序组成部分​​
  • ​​25. 如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储​​
  • ​​26. 如何使用事物码 SAT 查找某个 SAPGUI 屏幕字段对应的后台存储数据库表的名称​​
  • ​​27. 一步步创建包含自定义 Screen 的 ABAP 程序的详细步骤​​
  • ​​28. SAP ABAP 字符串变量容易疏忽和混淆的一些知识点​​
  • ​​SAP ABAP 处理 Excel 的标准函数 TEXT_CONVERT_XLS_TO_SAP 介绍​​
  • ​​29. 授人以渔-在 SAP MM 物料显示界面上看到一个字段,如何查找哪张数据库表的哪个字段进行的存储​​
  • ​​30. SAP ABAP 系统进行数据库表查询的几种常用方法​​
  • ​​31. 如何让 ABAP 服务器能够响应通过浏览器发起的自定义 HTTP 请求​​
  • ​​32. 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧​​
  • ​​33. 如何使用 saplink 安装其他网站上提供的 ABAP 程序​​
  • ​​34. ABAP 报表中如何给报表的输入参数增添 F4 Value Help​​
  • ​​35. ABAP 报表中如何以二进制方式上传本地文件​​
  • ​​36. ABAP 里文件操作涉及到中文字符集的问题和解决方案​​
  • ​​37. 如何对 ABAP 数据库表通过 ABAP 代码进行更新和删除操作​​
  • ​​38. 如何让 ABAP 报表在后台作业的模式下运行​​
  • ​​39. 如何使用 ABAP 代码解析 XML 文件​​
  • ​​40. 如何使用 ABAP 代码发送邮件到指定邮箱​​
  • ​​41. 如何使用 ABAP 代码发送带有 PDF 附件的电子邮件​​
  • ​​50. 如何在 SAPGUI 里显示上传到 ABAP 服务器的 PDF 文件​​
  • ​​51. 如何在 SAP ABAP 系统中使用 Adobe Form​​
  • ​​52. 使用 SAP ABAP 代码生成 PDF 文件,填充以业务数据并显示在 SAPGUI 里​​
  • ​​53. 如何把 SAP ABAP 系统里一张数据库表的内容,显示在 Adobe PDF Form 里​​
  • ​​54. 使用 ABAP 代码制作手机能够扫描的二维码(QRCode)​​
  • ​​55. ABAP 是一门支持面向过程和面向对象的混合型编程语言,实际开发中用哪种?​​
  • ​​57. SAPGUI 里 F1 功能键的用法专题讲解​​
  • ​​58. 通俗易懂的 SAP ABAP 会话管理(Session Management)概念讲解,包含具体的实例​​
  • ​​59. 案例分析 - 如何通过 F1 和单步调试,找到 SE10 事物码里用户名字段的初始值填充逻辑​​
  • ​​61. 如何使用 Java 程序通过 SAP Java Connector 调用 ABAP 系统的函数​​
  • ​​62. 如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能​​
  • ​​63. 如何使用 Visual Studio Code 查看和浏览 ABAP 代码​​
  • ​​64. 如何在浏览器里执行 SAPGUI 的事务​​
  • ​​65. 使用事物码 SAT 查找某个 SAPGUI 事物码操作调用的 Function Module 列表​​
  • ​​66. SAP ABAP Function Module 的动态调用方式使用方式介绍​​
  • ​​67. SAP ABAP 监控用户事物码和程序执行的工具介绍​​
  • ​​68. 关于 SAP ABAP 报表的多语言显示问题​​
  • ​​71. SAP ABAP 报表屏幕输入字段如何实现联动效果​​
  • ​​73. 如何手动通过增强的方式,给 SAP ABAP 数据库表增添新的字段​​
  • ​​74. 学会使用 SAP ABAP Application Log 在代码里添加应用日志记录功能​​
  • ​​75. SAP ABAP 一个有用的程序正确性辅助工具,Checkpoint group 的使用方法介绍​​
  • ​​76. 如何使用 ST05 事物码,快速找到访问指定数据库表的 ABAP 代码​​
  • ​​77. 简单聊聊 ABAP 变量消耗的内存空间这个话题​​
  • ​​78. 浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题​​
  • 更多文章正在写作中

Office 专题

  • ​​42. 用 ABAP 新建本地 Excel 文件并写入数据​​
  • ​​43. 如何使用 ABAP 创建包含不同字体大小的 Word 文档​​
  • 更多文章正在写作中

ALV 开发专题

  • ​​44. 27 行代码开发一个最简单的 SAP ALV 报表​​
  • ​​45. 48 行代码给 ABAP ALV 报表的数据行增添颜色效果​​
  • ​​46. 77 行代码实现ABAP ALV 中的双击事件处理​​
  • ​​47. SAP ABAP ALV 层次顺序表如何使用双表头(Multiple Headers)进行数据输出​​
  • ​​48. 如何在 SAP ABAP ALV 报表里以交通灯的方式显示某一列的值​​
  • ​​49. 在弹出对话框窗口里显示 SAP ABAP ALV 列表​​
  • ​​56. 动手开发一个有用的 ABAP ALV 工具 - 查看指定用户的 ABAP 传输请求,模拟 SE10 事物码​​
  • ​​69. 利用 ALV 实现增删改查系列之一:让 ALV 报表进入可编辑状态​​
  • ​​70. 利用 ALV 实现增删改查系列之二:仅让 ALV 报表某一列允许被编辑​​
  • ​​72. 利用 ALV 实现增删改查系列之三:如何给 SAP ABAP ALV 报表的修改功能添加自定义校验逻辑​​

更多文章正在写作中

我们用一个简单的 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 应用,执行后会出现的情况和背后的知识点。




以上是关于浅谈 ABAP 程序运行时出现『内存耗尽』错误的问题试读版的主要内容,如果未能解决你的问题,请参考以下文章

将 OpenMP 与 Fortran 一起使用时出现内存错误,运行 FFTW

错误:无法分配内存:尝试在 2560x1600 xhdpi 的 eclipse 模拟器中运行我的应用程序时出现 1455

出现错误“资源耗尽:在分配具有形状 [1800,1024,28,28] 的张量并在 /job:localhost/... 上键入 float 时出现 OOM”

mysql安装时出现错误

使用 pthread_create 时出现 valgrind 内存泄漏错误

运行作曲家更新时出现内存错误