暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Oracle内存使用
1363
26页
20次
2020-06-28
免费下载
.
概述
1.
内存段类型


上是对不同内存的使用目的和存放位置不同的区分。

使用以下几种段类
型。
程序文本

文本段包括了程序本身的可执行的机器代码
除动态链接库以外
。文本段一般标识为只读,因此它能被
多个进程共享来跑同一个程序。
初始化全局数据

这一段包括了被编译器初始化的全局数据,比如用于跟踪数据的字符串。初始化数据能被修改,因此
它不能被运行同一程序的多个进程共享。

很少使用这个段。
未初始化全局数据

未初始化全局数据一般称为

以符号开始的块
段。这一段包括了静态
分配的全局数据,这些数据在进程运行时被进程初始化。

也很少使用这个段。
数据堆

数据堆被用于进程在运行时,通过使用系统调用


动态分配内存。

将数据
!
用于
"
执行堆栈
#$
无论什么时候一个函数被调用,它的参数和返回上下文被
$ !
到一个执行堆栈中。返回上下文实际上
是一组
%
注册值,这些注册值描述了进程在调用函数时那一刻的状态。当调用结束后,堆栈被

上下文被保留,以使执行能从函数调用时的结构状态立即执行下去。堆栈同时还保留了代码块的本地变量。
堆栈大小依赖于函数嵌套或递归调用的深度、参数和本地变量所需的内存大小。
共享库
!& 
共享库是一个与位置无关的可执行代码集,这个集合实现了许多程序——特别是系统调用功能——所
需要的功能。共享库段也是只读的,它被所有的进程
包括

进程
共享。共享库无需保存一份在内
存中。当调用了共享库中的一个函数后,进程需要打开共享库文件,然后通过系统调用

将它映
射到它的地址空间去。
使用共享库的另外一种方法是在程序文本段本身将需要的系统调用
$
进去。在那些不支持共享
库的操作系统中或用上面方式有问题时就需要这样做。在大多数操作系统中,

使用共享库作为来
实现系统调用而不是实现

代码本身。然而,
'(
类库都是编译好的,并且作为共享库动态链接的。
共享内存段
!)
共享内存允许关联的进程共同读写内存中的同样数据。每个需要在共享内存段中寻址的进程都需要先
阿里巴巴保密信息 / ALIBABA CONFIDENTIAL
将这段内存附到它自己的虚拟内存地址中去
一般通过
!
系统调用实现
"
就是使用的
共享内存段。
2.
内存管理模块
*+
模块分类

中有两个内存管理模块。
·
内核服务内存管理模块
,(),)
·
内核通用堆管理模块
,,
-+
主要功能
./
表中,有两种用于这两个模块的表,它们就是以
,)
,
开头的表。这两个模块相互非常紧
密。内存管理模块是负责与操作系统进行接口以获取用于

的内存,同时还负责静态内存的分配。
这个模块中比较重要的
./
表是
/ 0
,它记录了固定

$1!
$1
在内核服务
内存中的分配。而堆管理模块则负责动态内存的管理。这也就是为什么
"
"
中堆又叫可变内存区
了。
!
&!
"
的堆都是由这个模块管理的。
2+
!
结构
一个堆

包括一个堆描述符和一个或多个内存扩展段

。一个堆还可以包含子堆
$!
。这种情下,堆描述符和子堆的扩展段可以被其父堆的大块
!$
。堆描述符的大小
依赖于堆的类型和堆的空闲列表和
&3
表所包含的

头的多少。一个扩展段又一个包含
向前一个和后一个扩展段指针

的小的头,扩展段的其他内存就是堆可用于动态分配的内存。
除了还包含一个保留表的这一特外,
!
中的子堆有与
!
本身相同的结构。
内存是以
%!$
位分配的。空
!$
按照大小来组在相的空闲列
4& 
中。而未

的、可重
$
!$
维护在两个分别用于周期性
!$
短期
!$
&3
链表中。子堆还有一个包含少许空内存的主永久内存
!$
。子堆也许还包含子堆,一
共可以嵌套到四层
子堆的概非常重要,因为大多数被存在
!
中的对实际上都被保存在子堆中,而不是
保存在上一的堆中。在一个子堆中寻空间就相当于在
!
中寻空间。它们的
不同就在于子堆可以通过分配的扩展段

增长,而
!
有固定的扩展段数
*5
引入
"
自动管理特后,
!
的扩展段数也是可变的
。为子堆分配的扩展段到扩展段大
小的限制,因此存在这样的可能,因为任何一个堆可以分配一个所需小扩展段大小的
!$
导致在子堆中查找一个小的
!$
失败
652*
错误
6+
扩展段控制参数
阿里巴巴保密信息 / ALIBABA CONFIDENTIAL
of 26
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜