培訓者:SAP成都研究院開發人員Jerry Wang算法
1. Understanding Memory Objects in ABAPsession
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.app
/SF0A0001/ANONYMOUSless
495142ide
2. Use Reference to Access Memory Object工具
ABAP裏引用的用法ui
3. ABAP和不少其餘語言同樣,支持寫時拷貝:this
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.spa
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.」component
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 )
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":