关于sap:SAP-ABAP-的两种内存对象类型

42次阅读

共计 861 个字符,预计需要花费 3 分钟才能阅读完成。

要钻研 SAP ABAP 内表的写时复制 (copy on write) 机制,ABAP Memory Inspector 是必不可少的工具。

ABAP Memory Inspector 能报告运行 ABAP 程序的外部会话应用的内存。

这个工具能提供下列两个维度的数据:

  1. 间接归因于 ABAP 应用程序的内存耗费。这包含 ABAP 程序的动态和动态内存对象中的内存,以及 ABAP 堆栈上程序应用的内存。
  2. 整个外部会话针对主机操作系统的内存调配。这包含 ABAP 内存耗费以及 ABAP 运行时和外部会话治理耗费的绝对大量的内存。

Memory Inspector 总是在制作内存快照之前运行 ABAP 垃圾收集器,这样 dead 内存对象就不会对内存耗费数据的指标产生影响。

一般来说,特地是因为运行外部会话自身的开销很小,所以咱们个别状况将内存剖析问题的重点,聚焦在 ABAP 应用程序的内存耗费自身。毕竟作为开发人员,咱们在任何状况下都只能影响 ABAP 程序的内存耗费,而不是运行时零碎的内存耗费。

Dynamic and Static Memory Objects

在 ABAP 内存对象的类型中,最容易引起问题的是动态内存对象。所谓动态内存对象,是那些大小能够随着程序运行而扭转的对象。它们包含以下类型的 ABAP 实体:

  • ABAP 内表(或者更确切地说,内表中的行,即其主体)
  • 字符串
  • 类对象(由 CREATE OBJECT 语句创立的对象)
  • 匿名数据对象(由 CREATE DATA 语句创立的对象)
  • boxed Component

用于拜访动态内存对象的变量蕴含对外部内存构造的援用,其中保留了动态内存对象的数据。因而,动态内存对象的变量统称为 援用变量

在 ABAP 中,将援用的程序实体称为“deep Component”,即必须通过评估援用来拜访其内容的组件。

相比之下,动态内存对象(动态变量,在 Memory Inspector 显示中)是那些其大小在设计时由数据类型申明设置的对象。除非程序代码自身发生变化,否则程序中此类变量所占用的内存不会发生变化。动态变量在 ABAP 用语中也称为 flat variableflat Component.

正文完
 0