内存管理系统的功能
特征应用程序在通常执行 ABAP 程序的工作进程中运行。该过程需要内存才能执行此操作, 由内存管理系统分配给进程。为工作进程分配内存的顺序 类型取决于工作流程类型(对话框或非对话框)(请参阅 SAP 内存类型)和基础操作系统。工作进程的虚拟地址空间中解释了虚拟地址空间中各个内存区域的位置。
扩展内存池是系统启动时保留的扩展内存区域。
- 滚入:用户特定的在工作进程中由扩展内存池显示,以便可以在下一个对话框中访问它 步。
- 推出:对话步骤结束后,工作进程在扩展内存池中再次隐藏用户特定的数据。
非用户特定的数据始终包含在工作流程中。此数据可能是:
- 程序代码
- 叠
- 静态数据
- SAP 缓冲区
- ABAP计划
- 表缓冲区
- …
仅当当前正在运行用户会话时,用户上下文数据才包含在工作流程中。此数据可能是:
- ABAP 变量
- 内部表
- …
内存类型
内存管理系统将内存分配给工作进程。不同的内存类型是:
-
扩展内存
-
专用内存(堆内存)
分配顺序取决于工作流程的类型和配置。
当用户上下文的大小增加时,可以根据需要扩展允许直接访问的用户上下文区域。
控制内存管理
abap/heaplimit:工作流程重新启动
一个工作流程的内存管理资源
ztta/roll_extension:扩展内存的限制
ztta/roll_extension_dia:对话工作流程的 EM 限制
ztta/roll_extension_nondia:非对话工作流程的 EM 限制
abap/heap_area_dia:对话框工作流程的堆内存限制
abap/heap_area_nondia:非对话工作流程的堆内存限制
abap/heap_area_total:堆内存的总限制
内存管理限制
abap/heap_area_total:堆内存限制
em/initial_size_MB:扩展内存池大小
rdisp/PG_SHM:分页缓冲区的大小
rdisp/PG_MAXFS:SAP 分页文件的最大大小
em/blocksize_KB:扩展内存的段大小
em/proc_max_size_MB:可分配给所有工作流程的最大 PROC 内存量。
内存管理统计信息
em/stat_log_size_MB:统计信息 – 用户上下文大小
em/stat_log_timeout:统计信息 – 用户上下文大小
用于控制操作系统的 SAP 内存释放的参数
ES/disclaim_threshold_MB
ES/disclaim_coasting_time_alloc
ES/disclaim_coasting_time_free
ES/blockdisclaimsize_KB
ES/freelist_compactor
监视
以下工具适用于监视:
-
调整摘要(事务ST02)
此处显示了特定 SAP 应用程序服务器的当前状态和内存资源使用情况。程序是 使用事务 ST02 检查卷筒/分页区域和扩展内存中所述。
-
用于监视主机系统中可用交换空间的事务。ST06
详细信息:使用事务 ST06 监视内存资源。
-
CCMS警报监视器(交易):RZ20
详细信息:CCMS 文档中的教程
-
用户概述(交易):SM04
调用事务或选择“工具 管理监视系统监视用户 概述”。SM04
在事务 SM04 中,您可以显示内存值的各种列。您可以使用图标
显示可能的列。
-
工作流程概述(事务)SM50)
选择该按钮以显示为特定工作进程保留的内存资源。Detail
详细信息:显示和控制工作流程。
通过监视 SAP 系统(事务)或系统外部(操作系统级别的 dpmon 程序)中的工作流,可以确定与 PRIV 模式相关的工作流状态。如果工作 进程经常切换到PRIV模式,您必须增加扩展内存和/或调整扩展的限制 记忆。SM50
-
使用事务中,您可以评估所有工作流程的此信息。或者,您可以使用事务调用此系统范围的列表 SM66.SM50
使用事务 SM50 确定 PRIV 模式下的工作流程。
可能的原因/纠正措施
-
没有更多的 SAP 扩展内存可用。
在此示例中,工作进程 5 和 6 无法分配更多的扩展内存,因为池已用完,尽管其 ZTTA/roll_extension 的限制仍将允许扩展内存。它们过早切换到 PRIV 模式(请参阅为用户上下文分配内存))
行动:
增加 SAP 扩展内存池(em/initial_size_MB:扩展内存池的大小),以防止将工作流程切换到 PRIV 模式。
-
对于大多数用户上下文(使用参数 ztta/roll_extension 设置),扩展内存的限制太低。许多上下文分配堆内存并切换到 PRIV 模式。
行动:
使用 ztta/roll_extension 增加扩展内存的限制。
-
扩展内存的限制太高。一些用户上下文可以完全填满整个扩展内存,从而 在达到限制之前,其他进程将切换到 PRIV 模式。
减少扩展内存的限制(在 ztta/roll_extension 中定义),或增加扩展内存(参见 em/initial_size_MB)。