当前位置:网站首页>进程内存
进程内存
2022-08-03 11:12:00 【用户7741497】
介绍
进程使用许多不同的资源来实现其目标。其中包括部分或全部 CPU 周期、内存、外部存储、网络带宽等。这篇文章是关于内存使用的。具体来说,它处理为数据存储分配的内存,例如:
- 公共和私有变量
当第一次为它们分配值时,它们被分配了内存空间。在局部数组的情况下,局部变量名称加上所有下标的值的组合引用单个变量值。
除了包含极长字符串的变量外,变量会占用与 $STORAGE 相关的空间。包含极长字符串的变量以不同方式存储,并且不占用 $STORAGE 中的空间。
- 对象实例
每当实例化一个对象时,都会分配空间来保存对象的当前内容以及它所引用的对象。删除最后一个对象引用时返回该空间。
- 本地
I/O缓冲区
将与该进程正在使用的设备相关联的 I/O 缓冲区存储在进程空间中。
管理进程空间
进程从用于上述实体的初始内存池开始。当应用程序创建它们时,它们会消耗池中的内存;当应用程序删除它们时,它们的内存将返回到池中。例如,当一个例程开始执行时,总是会创建消耗一些内存的局部变量;当例程返回并且这些变量超出范围时,这些变量使用的内存将被返回并可供重用。
当应用程序需要内存,并且进程在其内存池中没有足够大(连续)的可用内存区域来满足需求时,该进程会从底层操作系统请求额外的内存块以添加到其池中。稍后,如果该内存块完全未使用,它将返回给操作系统。由于为实体分配内存的顺序和从内存中删除这些实体的顺序不一定是彼此的镜像,因此随着执行的进行,内存在某种程度上会变得碎片化。这会影响上述操作系统的内存分配和释放。
$ZSTORAGE
进程最多可使用 2TB 内存。为了帮助管理内存使用, 为管理员或应用程序提供了一种方法来设置较小的内存消耗限制。该值存储在每个进程的系统变量 $ZSTORAGE 中,因此 $ZSTORAGE 始终包含进程内存的最大允许大小(以 KB 为单位)。
$ZSTORAGE 的值以 1KB 为单位指定。允许的最小值为 256,即 256KB。进程可以为 $ZSTORAGE 设置的最大值是 2TB (231 * 1KB) 内存。尝试设置小于最小值或大于最大值的值将分别默认为最小值或最大值。
每个进程内存最大值
此值通过管理门户设置。要访问相关页面,请选择系统管理 > 配置 >系统配置 > 内存和启动。在出现的页面上,设置Maximum Per-Process Memory (KB) 中的值。
在配置文件 (iris.cpf) 中,此参数称为 bbsiz。此值是进程启动时 $ZSTORAGE 的初始值。
注意:也可以在通过 ObjectScript JOB 命令启动进程时设置进程的内存限制。
$STORAGE
系统变量 $STORAGE 表示仍在运行的进程可用的存储量。它以字节为单位。当进程对内存的请求大于 $STORAGE 中的值或从操作系统分配内存的请求失败时,它会生成 <STORE>错误。
<STORE> 错误
当满足进程的内存请求会导致 $STORAGE 的值变为负数,或者操作系统分配内存的请求失败时,它会生成 <STORE>错误。关于处理 $STORAGE 变为负数的 <STORE> 错误, 进程可以被认为处于以下两种模式之一:正常模式和低内存模式。
- 正常模式
当进程处于正常模式并请求内存,否则会导致 $STORAGE 变为负数时,该进程会抛出 <STORE> 错误并进入低内存模式。
- 低内存模式
在低内存模式下,允许操作将 $STORAGE 推为负数,以便为应用程序提供一些额外的内存来处理错误和清理。当处于低内存模式的进程释放内存时,$STORAGE 的值至少上升到 256KB(或 $ZSTORAGE 的 25%,如果它更低),该进程将返回正常模式。在低内存模式下,$STORAGE 的下限约为 -1MB。否则会导致 $STORAGE 低于该限制的任何操作都会导致 <STORE> 错误。下限的值由进入低内存模式时的 $STORAGE 值定义,减去 1MB。
注意:进程可以将 $ZSTORAGE 设置为其允许范围内的任何值。如果 $ZSTORAGE 设置为小于当前使用的值,则 $STORAGE 将具有负值。如果在进程处于正常模式时发生这种情况,分配内存的下一个操作将导致进程获得 <STORE> 错误并进入低内存模式,下限等于该值减去 1MB。如果在进程已经处于低内存模式时发生这种情况,则下限保持不变。
对于因超出 -1MB 低内存模式限制或未能从操作系统分配内存而导致的 <STORE>错误,由于可用内存太少,进程的行为是不可预测的。进<STORE>错误,或者错误处理程序可能无法被调用并且进程可能会停止。
错误处理程序可以使用以下一种或多种方法解决 <STORE> 错误:
- 中止导致内存请求的计算,可能会释放计算在发生
<STORE>错误之前获得的任何存储空间。 - 尝试通过删除不需要的数据来生成更多可用内存。
- 执行任何必要的清理工作(例如关闭打开的文件),然后终止程序。
- 将
$ZSTORAGE的值设置为更大的值,以允许进程继续并在将来请求更多内存。
特别注意事项
平台
大多数实例在每个进程的可分配空间少于 2TB 的系统上运行。在此类系统上,当 进程耗尽可用系统内存(实际物理内存加上可用交换空间)时,底层系统可能会以多种方式处理这种情况。一些例子是:
- 在某些平台上,系统会发送一个信号,导 进程终止。
- 在某些平台(例如 Linux 和 AIX)上,系统使用启发式算法来杀死它认为最具攻击性的进程。这可能是流程,但也可能是另一个选择的流程。
- 一些系统通过产生使底层操作系统崩溃的内核“恐慌
panic”来处理内存耗尽。 - 一些系统可以处理内存耗尽的情况,但恢复可能会导致进程中的访问冲突。
良好的编程实践表明进程不应依赖于底层平台使用的错误恢复算法。相反,此类流程应提供充分的设计、测试和日志记录,以允许流程适当地估计和管理其自身的资源需求。
边栏推荐
- 【Mysql】清理binlog日志的方法
- Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...
- 零拷贝、MMAP、堆外内存,傻傻搞不明白...
- 成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...
- 浅谈SVN备份
- 试题G:单词分析 ← 第十一届蓝桥杯大赛第二场省赛赛题
- 微信小程序获取用户手机号码
- html+css+php+mysql实现注册+登录+修改密码(附完整代码)
- 代码分析Objective-C中的深拷贝与浅拷贝
- Analysis of the idea of the complete knapsack problem
猜你喜欢

成为优秀架构师必备技能:怎样才能画出让所有人赞不绝口的系统架构图?秘诀是什么?快来打开这篇文章看看吧!...

ABAB-740新语法

科普大佬说 | 黑客帝国与6G有什么关系?

For invoice processing DocuWare, cast off the yoke of the paper and data input, automatic processing all the invoice received

Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...

本周四晚19:00知识赋能第4期直播丨OpenHarmony智能家居项目之设备控制实现

【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制

Win10/11 删除文件资源管理器左侧栏目文件夹
![[Bubble sort and odd-even sorting]](/img/89/d63afe1900a05b2a5615fcc3c09ccb.png)
[Bubble sort and odd-even sorting]

fast planner中拓扑路径搜索
随机推荐
LeetCode 899 有序队列[字典序] HERODING的LeetCode之路
Programmers architecture practice way: software architecture basic concepts and thinking
XDR平台架构与关键技术解析
Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...
多态详细讲解(简单实现买票系统模拟,覆盖/重定义,多态原理,虚表)
【LeetCode—第2题 两数之和 代码详解 】附有源码,可直接复制
build --repot
2022年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
程序员架构修炼之道:软件架构基本概念和思维
下午见!2022京东云数据库新品发布会
VRRP协议的作用及VRRP+OSPF配置方法
The way of programmer architecture practice: how to design a sustainable evolution system architecture?
[Bubble sort and odd-even sorting]
增加WebView对localStorage的支持
C#/VB.NET 从PDF中提取表格
FR9811S6 SOT-23-6 23V,2A同步降压DC/DC转换器
用于发票处理的 DocuWare,摆脱纸张和数据输入的束缚,自动处理所有收到的发票
Fastjson反序列化
Generate interface documentation online
[华为云在线课程][SQL语法入门][学习笔记]