物理内存和虚拟内存

news/2024/7/20 15:52:49 标签: 内存管理

关于物理内存和虚拟内存

1、概念

物理内存:真实的硬件设备(内存条)

虚拟内存:利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。(为了满足物理内存的不足而提出的策略)

 

2.使用的顺序

linux会在物理内存不足时,使用交换分区的虚拟内存。

内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。

linux的内存管理采取的是分页存取机制,Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面。这可以避免等待交换所需的时间。

( 注1 :linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存,linux内核根据”最近最经常使用“算法,仅仅将一些不经常使用的页面文件交换到虚拟内存,有时我们会看到这么一个现象:linux物理内存还有很多,但是交换空间也使用了很多。其实,这并不奇怪,例如,一个占用很大内存的进程运行时,需要耗费很多内存资源,此时就会有一些不常用页面文件被交换到虚拟内存中,但后来这个占用很多内存资源的进程结束并释放了很多内存时,刚才被交换出去的页面文件并不会自动的交换进物理内存,除非有这个必要,那么此刻系统物理内存就会空闲很多,同时交换空间也在被使用,这是正常现象。)

 

(  注2:交换空间的页面在使用时会首先被交换到物理内存,如果此时没有足够的物理内存来容纳这些页面,它们又会被马上交换出去,如此以来,虚拟内存中可能没有足够空间来存储这些交换页面,最终会导致linux出现假死机、服务异常等问题,linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了。
因此,合理规划和设计linux内存的使用,是非常重要的。

 

转载于:https://www.cnblogs.com/locker-c/p/7692294.html


http://www.niftyadmin.cn/n/994457.html

相关文章

十个习惯

十个习惯 [ 作者: Andy ]一、不轻言退缩二、不停学习,不断修正。三、坐言起行,立即动手,从小事做起。为什么看到机会却没有抓住,是因为我们在犹豫:用什么方法更好啊,是不是还有更好的机会啊,或…

FragmentTabHost+fragment中获得fragment的对象

在FragmentTabHost这个控件中如何获得fragment的对象呢,其实在之前我也不知道怎么获取的,在网上粗略查了一下,没人有详细的说明,要么就是跟我想要的不一样,不过我有一股倔脾气,终于被我知道了 下面就是我的…

跨站请求伪造

1. 什么是跨站请求伪造(CSRF) CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本&…

有关appwidget的简单开发以及步骤

什么是AppWidget?AppWidget就是我们平常在桌面上见到的那种一个个的小窗口,利用这个小窗口可以给用户提供一些方便快捷的操作。本篇打算从以下几个点来介绍AppWidget: 1.如何创建一个简单的AppWidget 2.如何使得AppWidget与客户端程序交互 创建简单的…

MySQL查询去重语句

1、distinct select count(distinct CName) from Course select count(CName) from (select distinct CName from Course) as temp 2、group by select count(1) from Course group by CName >如有问题,请联系我:easonjim#163.com,或者下方…

自定义View:自定义属性

开发环境:Windows 开发工具:eclipse 今天闲着蛋疼,加上项目上有用到的地方有两个,想着放置系统源生控件终是不妥,然后就整了这么一个控件出来,有段时间没有弄自定义控件和自定义属性,发现有些…

无需容器的对象关系映射--用 Hibernate 和 Spring 开发事务持久层

当您自以为已经了解了所有开发工具时,肯定又会冒出一个新的工具。在本文中,developerWorks 的固定撰稿人 Rick Hightower 用一个真实世界的例子向您介绍两个最激动人心的企业新技术。Hibernate 是一个对象关系映射工具,而 Spring 是一个 AOP …

c#可空类型

//默认情况下,基本值类型是不能被赋空值的 //可空类型是定义一个基本值类型,使它可以被赋空值 。 using System; using System.Collections.Generic; using System.Text; namespace 可空类型 { class Program { static void Main(string…