内存空间的分配与回收
《操作系统》
操作系统作为系统资源的管理者,当然也需要对内存进行管理,要管些什么呢?
游戏GTA的大小超过60GB,按理来说这个游戏程序运行之前需要把60GB数据全部放入内存。然而,实际我的电脑内存才4GB,但为什么这个游戏可以顺利运行呢?
为了使编程更方便,程序员写程序时应该只需要关注指令、数据的逻辑地址。而逻辑地址到物理地址的转换(这个过程称为地址重定位)应该由操作系统负责,这样就保证了程序员写程序时不需要关注物理内存的实际情况。
所以操作系统主要管理一下四个事情
- 1.操作系统负责内存空间的分配与回收
- 2.操作系统需要提供某种技术从逻辑上对内存空间进行扩充
- 3.操作系统需要提供地址转换功能,负责程序的逻辑地址与物理地址的转换
- 4.操作系统需要提供内存保护功能。保证各进程在各自存储空间内运行,互不干扰
内存保护
内存保护可采取两种方法:
方法一:在CPU中设置一对上、下限寄存器,存放进程的上、下限地址。进程的指令要访问某个地址时,CPU检查是否越界。
方法二:采用重定位寄存器(又称基址寄存器)和界地址寄存器(又称限长寄存器)进行越界检查。重定位寄存器中存放的是进程的起始物理地址。界地址寄存器中存放的是进程的最大逻辑地址。
猜你喜欢
java虚拟机(jvm)
1599
年诞生于MT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的3件事情: 哪些内存需要回收? 什么时候回收? 如何回收?经过半个多世纪的发展
blog
Java内存区域与内存溢出异常
java基础
3751
用进行讨论,Java堆中的上述各个区域的分配、回收等细节将会是下一章的主题。 根据《Java虚拟机规范》的规定,Java堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的,这点就像我们
blog
jvm内存模型分析-垃圾收集算法
java虚拟机(jvm)
1446
1.标记-清除算法最基础的收集算法是“标记-清除”(Mark-Sweep)算法,如同它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对
java虚拟机(jvm)
7012
象的指针引用,所以一般这部分使用的内存相对较小,而且当方法调用完成以后栈帧中占用的内存即可被回收。影响java虚拟机栈最大深度的因素有那些1.Java虚拟机栈的大小直接影响栈的深度2.在java虚拟机栈
java虚拟机(jvm)
2464
这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等。参考资料深入理解java虚拟机《周志明》1.对象的内存布局HotSpot虚拟机中,对象在内存中存储的布局可以
blog
jvm内存模型分析(2)之方法执行的过程
java虚拟机(jvm)
4768
jvm内存模型分析(1)已经对内存模型进行了一个宏观的概括http://www.jiajiajia.club/weblog/blog/artical/82那么下边具体分析一下方法执行的过程还是以一个
ofc
Java内存区域与内存溢出异常
official
878
《深入理解java虚拟机》[TOC]一、运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随
java虚拟机(jvm)
3574
jvm内存模型分析(5)堆内存溢出以及分析1.模拟堆内存溢出代码packagetest;importjava.util.ArrayList;importjava.util.List
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。