SAP专家培训之Netweaver ABAP内存管理和内存调优最佳实践

简介: 培训者:SAP成都研究院开发人员Jerry Wang1. Understanding Memory Objects in ABAPNote1: DATA itab WITH HEADER LINE for processing individual table rows have short...

培训者:SAP成都研究院开发人员Jerry Wang

1. Understanding Memory Objects in ABAP

Note1: DATA itab WITH HEADER LINE for processing individual table rows have short forms that implicitly use the header line as work area. These short forms are allowed only outside of ABAP Objects.

/SF0A0001/ANONYMOUS

495142

2. Use Reference to Access Memory Object

ABAP里引用的用法

3. ABAP和很多其他语言一样,支持写时拷贝:

As internal tables and strings can become very large, the copy operation may be quite time-consuming. On the other hand, the copy operation is only necessary if a modification is made via one of the references, which is NOT always the case.

For this reason, ABAP runtime delays the copy operation until a modification is actually made. These object types (internal tables and strings) keep track of the number of references that point to them, which is referred to as “reference counting.”

4. 写时拷贝的工作原理

5. ABAP的内存管理之内存清理

内存释放关键字CLEAR,REFRESH和FREE的区别:

6. ABAP引用类型的内存分配

7. ABAP字符串(String)类型的内存分配

8. ABAP内存垃圾回收器的工作原理

9. ABAP内存垃圾回收的实现算法

10. ABAP垃圾回收机制的触发时机

11. ABAP垃圾回收的手动触发,请谨慎使用

12. 更多关于引用类型的变量在ABAP垃圾回收算法中的影响

13. ABAP bound memory的含义

the sum of the size of the memory object and the bound memory of all DIRECT children that are table bodies or strings with a reference count of one.

Upon deleting the memory object, the bound memory is the minimum amount of memory that is released, and the referenced memory is the maximum amount that can be released. Therefore, the amount of memory that is actually released is somewhere between these two values.

14. ABAP内存预分配算法(preallocation mechanism)介绍

15. ABAP已分配内存和已使用内存的区别

For internal tables and strings, ABAP runtime environment uses a preallocation mechanism that automatically reserves some EXTRA storage when the memory object is created to allow for potential growth.

It avoids many allocation and deallocation operations. Otherwise, ABAP runtime environment would have to allocate new storage every time the memory object grows.

Due to this preallocation mechanism, both internal tables and strings also have “allocated memory” and “used memory” values as memory sizes.

Allocated memory is the amount of memory that is set aside for the memory object. Used memory is the current size of the memory object used by the application.

For class objects and anonymous data objects, used memory and allocated memory are the same. Because their size is fixed, they don’t require additional space to accommodate growth.

16. ABAP程序内存消耗的尺寸计算介绍

17. 什么是ABAP内存分配中的SCC - strongly connected component - 强连通组件

18. 有用的ABAP内存分析和调优工具,事务码S_MEMORY_INSPECTOR

19. 具体例子,您知道下面这段代码,新生成的引用类型的变量,内存是从哪里分配的?堆?不完全对。

Logging on to an application server opens a user session. A user session is assigned its own memory area of the SAP memory, in which SPA/GPA parameters can be stored.

For every user session , a main session ( external session ) can be opened. Each main session is assigned its own memory area of ABAP memory ( EXPORT --- IMPORT ) rdisp/max_alt_modes

Each call of an ABAP program creates a new internal session, in which the called program is loaded.

20. 什么是ABAP程序的PXA - Program Execution Area

21. ABAP程序的用户上下文 - User Context

22. 什么是ABAP的工作进程

23. ABAP工作进程的内存虚拟地址空间和物理地址空间的映射

Roll Area:

Memory area with a set (configurable) size that belongs to a work process.

For technical reasons, the roll area is always the first memory available to use for a work process. Only afterwards can extended memory be requested.

When the context of a work process changes, the data is copied from the roll area to a common resource known as the roll file. To prevent repeated copying, another roll buffer is located in between, which is part of the shared memory

Paging area:

Allocation of memory for the current internal session by transferring pages out of memory, similarly to operating system paging. SAP's memory management concept currently limits SAP Paging to cases where the ABAP commands EXTRACT and EXPORT... TO MEMORY... are used.

Private memory:

If the extended memory is fully occupied, or the limit for the work process has been exceeded, private memory is assigned to the work process. This is known as private memory because it is specific to the process, and the user context can no longer be processed by a different work process (PRIV mode).

ABAP扩展内存 - extended memory

User context is stored in the extended memory (EM) to enable fast context change . Depending on the operating system, how SAP implements EM addressing/mapping is different.

When the context is changed, the user context is not copied as with the roll area. Instead it is allocated to alternating work processes by mapping operations which results in a faster context change because less data is copied and mapping an extended area is not work-intensive. The result is low CPU usage and shorter access times.

SAP dispatcher is responsible for the following principle tasks:

1. Initialization, reading profile parameters, starting work processes and logging on to the message server

2. Evenly distributing the transaction load across work processes

3. Connecting to the GUI layer

4. Organizing communication processes

这道题的答案:

The roll area consists of two segments. The first segment, which can be set with the parameter ztta/roll_first, is assigned to the work process first as memory. If this is used up, the work process has more memory assigned to it. The amount of memory is determined by the difference between the ztta/roll_area and ztta/roll_first parameters.

正确答案,不能一概而论,有三种情况。

情况1:

Roll area: if ( roll_current_area + request size <= roll_area )

情况2:

Extended memory: if ( roll_current_area + request size > roll_area ) AND ( extend memory is not full )

情况3:

Private memory: if ( roll_current_area + request size > roll_area ) AND ( extend memory is full )

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章
|
3月前
|
BI
SAP ABAP 显式增强技术之 New BAdI 的技术原理介绍试读版
SAP ABAP 显式增强技术之 New BAdI 的技术原理介绍试读版
22 0
|
7月前
|
Kubernetes 应用服务中间件 Docker
SAP ABAP Netweaver 容器化的一些前沿性研究工作分享
SAP ABAP Netweaver 容器化的一些前沿性研究工作分享
82 0
|
7月前
|
存储 JavaScript Cloud Native
SAP ABAP 平台新的编程模型
SAP ABAP 平台新的编程模型
69 0
|
7月前
|
机器学习/深度学习 JavaScript 前端开发
SAP 云平台 ABAP 编程环境的前世今生
SAP 云平台 ABAP 编程环境的前世今生
66 0
|
10月前
|
存储 程序员 编译器
【Effective C++详细总结】第三章 资源管理
【Effective C++详细总结】第三章 资源管理
231 0
|
算法 Java
SAP专家培训之Netweaver ABAP内存管理和内存调优最佳实践
SAP专家培训之Netweaver ABAP内存管理和内存调优最佳实践
145 0
|
XML JavaScript 前端开发
作为一个SAP开发人员,需要学习SAP传统技术(比如ABAP)以外的开源技术吗?
作为一个SAP开发人员,需要学习SAP传统技术(比如ABAP)以外的开源技术吗?
72 0
作为一个SAP开发人员,需要学习SAP传统技术(比如ABAP)以外的开源技术吗?
|
缓存 监控 网络协议
SAP扫盲系列之二:SAP ABAP应用服务器的组成部分
SAP扫盲系列之二:SAP ABAP应用服务器的组成部分
266 0
SAP扫盲系列之二:SAP ABAP应用服务器的组成部分
SAP ABAP实用技巧介绍系列之 ABAP内存管理学习
Created by Jerry Wang, last modified on May 26, 2014
203 0
SAP ABAP Netweaver里进程能够申请的最大内存
SAP ABAP Netweaver里进程能够申请的最大内存
SAP ABAP Netweaver里进程能够申请的最大内存