Java内存管理机制与jvm参数介绍

合集下载

JVM的内存管理机制详解

JVM的内存管理机制详解

JVM的内存管理机制详解JVM是Java虚拟机的缩写,它是Java程序的运行环境。

JVM的内存管理机制是其核心功能之一,它负责管理Java程序的内存分配和回收,包括对象的创建、使用和销毁等。

JVM的内存管理机制主要由堆、栈和方法区组成。

堆是Java程序运行时的动态数据区,用来存储对象实例和数组。

栈是每个线程私有的,用来存储局部变量、方法参数和运算数据等。

方法区是存储类信息、常量、静态变量和编译器优化后的代码等。

堆是Java程序最大的内存区域,被所有线程共享。

在JVM启动时,会预设一个初始大小,但它可以动态地扩展或收缩。

堆内存由年轻代和老年代组成。

年轻代分为Eden区和两个Survivor区(名为S0和S1)。

当新对象被创建时,它们会被放在Eden区。

当Eden区满时,会触发垃圾回收,把不再被引用的对象回收掉,而仍然存活的对象会被移动到Survivor区。

经过多次垃圾回收后仍然存活的对象会被移动到老年代。

老年代中的对象会比较稳定,一般不会被频繁回收。

栈是线程私有的,用于存储局部变量、方法参数和运算数据等。

栈的大小是固定的,由编译器预先确定,并在线程创建时分配。

每个栈帧由局部变量表、操作数栈、动态链接和方法出口等组成。

当方法被调用时,JVM会为该方法创建一个栈帧,当方法返回时,栈帧就会被销毁。

栈帧的销毁顺序和创建顺序相反,即最后创建的栈帧最先销毁。

方法区是线程共享的,用于存储类信息、常量、静态变量和编译器优化后的代码等。

方法区大小是固定的,通常比堆小。

在方法区中,类的信息会一直保存,直到JVM退出。

方法区还包括运行时常量池,用来存储编译期生成的字面量和符号引用。

符号引用是对类、字段和方法的符号引用,如类或方法的全限定名。

字面量是Java程序中的常量,如字符串、整数和浮点数等。

在JVM中,内存的分配和回收是通过垃圾回收器(GC)来完成的。

GC会定期地检查堆中的对象,将不再被引用的对象回收掉,释放内存空间。

JVM的内存机制介绍

JVM的内存机制介绍

JVM的内存机制介绍JVM(Java Virtual Machine)是Java虚拟机的缩写,是一种用于执行Java字节码的虚拟计算机。

JVM的内存机制包括堆内存、栈内存、方法区、本地方法栈和程序计数器等几个部分。

下面,我将对每个部分的内存机制进行详细介绍。

1. 堆内存(Heap Memory):堆内存是JVM中最大的一块内存区域,用于存储对象实例。

Java中所有的对象都在堆内存中进行分配和回收。

堆内存分为两个区域:新生代和老年代。

新生代又分为Eden区、From Survivor区和To Survivor区。

- Eden区是对象被创建时的初始分配区域,大部分对象首先在Eden区进行分配。

- Survivor区是用于存放幸存的对象的区域,当Eden区满了后,一部分幸存的对象会被移动到Survivor区中。

- 当Survivor区满了,对象会被移到老年代中。

堆内存的大小可以通过启动参数或命令行选项进行调整。

2. 栈内存(Stack Memory):栈内存用于存储局部变量、方法参数、对象的引用和方法调用的记录等。

每个线程都有一个独立的栈内存空间,栈中的数据是线程私有的,线程之间不能共享。

栈内存的大小由系统决定,不需要手动调整。

每个方法被调用时,JVM会自动创建一个栈帧(Stack Frame),用于存储方法的信息和临时变量等。

当方法执行完成后,栈帧被销毁,释放内存空间。

3. 方法区(Method Area):方法区是用于存储类的结构信息、方法和常量池等。

它是所有线程共享的区域,用于存储编译后的类信息、静态变量、常量和字节码等。

方法区的大小也由系统决定,不需要手动调整。

方法区的内存空间可以进行垃圾回收,但通常情况下,垃圾回收只会清理无用的类和常量等。

4. 本地方法栈(Native Method Stack):本地方法栈用于执行本地方法(Native Method)的数据区域。

本地方法是指使用其他语言(如C、C++)编写的方法,通过本地方法接口(JNI)与Java代码进行交互。

jvm内存分配机制

jvm内存分配机制

JVM内存分配机制及类加载过程概述JVM(Java虚拟机)内存分配机制分为以下三个部分:
1.静态存储区(方法区):这部分内存内存在程序编译时就已经分配好,并
且在整个程序运行期间都一直存在。

主要存放静态数据,如全局static数据和常量。

2.栈区:栈内存主要存储函数(方法)中定义的基本类型变量和对象的引用
变量。

当方法执行时,方法内的局部变量都在栈内存中创建,并在方法执行结束后自动释放。

此外,JVM中的栈内存是连续的内存区域,其大小由系统决定。

3.堆区:堆区用于动态内存分配,例如通过new来申请任意大小的内存(对
象或数组)。

堆区不连续,并且需要程序员手动释放。

其内存管理依赖于垃圾回收机制。

此外,JVM在遇到new指令时,会检查该指令的参数是否能在常量池中找到一个类的符号引用,并检查这个符号引用指向的类是否被加载、解析和初始化过。

如果未完成这些步骤,则会执行类加载过程。

在类加载完成后,JVM会为新生的对象分配内存,并初始化这些内存区域。

以上信息仅供参考,如需更多信息,建议咨询专业技术人员或查阅相关书籍文献。

mc jvm参数

mc jvm参数

mc jvm参数Java虚拟机(JVM)参数是用于配置Java应用程序运行时行为的参数。

这些参数提供了对垃圾收集器、内存管理、JIT编译器和JVM诊断工具的定制控制。

下面是一些常用的JVM参数:-Xms:这个参数用于设置JVM启动时分配的初始堆内存大小。

例如,-Xms512m 将分配512MB的初始堆内存。

-Xmx:这个参数用于设置JVM可以使用的最大堆内存大小。

例如,-Xmx1g将限制堆内存使用量为1GB。

-XX:NewRatio:这个参数用于设置老年代和新生代的比例。

例如,-XX:NewRatio=3将使老年代与新生代的比例为3:1。

-XX:SurvivorRatio:这个参数用于设置新生代中Eden区与Survivor区的比例。

例如,-XX:SurvivorRatio=8将使Eden区与Survivor区的比例为8:1。

-XX:MaxPermSize:这个参数用于设置永久代的最大大小。

需要注意的是,这个参数仅在某些较旧的Java版本中使用,而在Java 8及更高版本中已经被-XX:MaxMetaspaceSize替代。

-XX:+UseConcMarkSweepGC:这个参数启用CMS垃圾收集器,以降低停顿时间。

-XX:+PrintGCDetails:这个参数用于打印详细的垃圾收集日志,以便于分析和调试。

-XX:+HeapDumpOnOutOfMemoryError:这个参数在发生OutOfMemoryError时生成堆转储,有助于分析内存泄漏问题。

这些参数可以帮助你根据应用程序的需求和硬件配置来优化JVM的性能。

请注意,根据你使用的Java版本和具体的硬件配置,可用的参数可能会有所不同。

因此,建议查阅相关文档或使用java -XX:+PrintFlagsFinal命令来查看所有可用的JVM参数及其当前值。

JVM的内存机制介绍

JVM的内存机制介绍

JVM的内存机制介绍JVM(Java Virtual Machine)是Java程序的运行环境,它负责解释和执行Java字节码,以及管理Java程序的内存使用。

JVM的内存机制包括堆内存和非堆内存,其中堆内存又分为新生代和老年代。

本文将详细介绍JVM的内存机制。

1.堆内存堆内存是Java程序运行时存储对象实例的地方。

在JVM启动时,就会分配一个固定大小的堆内存空间。

堆内存又分为新生代和老年代。

1.1新生代新生代是新创建的对象的存储区域,通常用于存放生命周期较短的对象。

它又分为Eden空间、Survivor0空间和Survivor1空间。

- Eden空间:是对象最初被创建的地方。

当Eden空间不够存放新创建的对象时,触发Minor GC(年轻代垃圾收集器)对Eden空间进行垃圾回收,将仍然存活的对象复制到Survivor0或Survivor1空间中。

- Survivor0和Survivor1空间:是存放经过一次Minor GC后仍然存活的对象的地方。

当Survivor空间不够存放存活对象时,触发Minor GC,将仍然存活的对象复制到另一个Survivor空间中,同时对原空间进行垃圾回收。

1.2老年代老年代是存放长时间存活的对象的地方,通常存放生命周期较长的对象。

当一个对象经过多次Minor GC后仍然存活,就会被晋升到老年代中。

老年代的垃圾回收称为Major GC(Full GC),它会对整个堆空间进行垃圾回收。

2.非堆内存非堆内存是用来存放程序数据和JVM自身数据的地方,它不是由Java虚拟机管理的内存区域。

在Java8及之前的版本中,非堆内存主要包括方法区和本地方法栈。

2.1方法区方法区用于存放类的结构信息,包括类、方法、字段、静态变量等。

方法区的大小是固定的,通过设置JVM参数进行配置。

在方法区中,通过不同的垃圾回收算法对被废弃的类进行垃圾回收。

2.2本地方法栈本地方法栈用于执行本地方法(即非Java语言编写的方法,例如C/C++),它提供了Java和本地方法之间的接口。

JVM工作原理

JVM工作原理

JVM工作原理JVM(Java虚拟机)是Java程序运行的核心组件,它负责将Java源代码编译成可执行的字节码,并提供了一系列的运行时环境和功能。

了解JVM的工作原理对于开发高效、稳定的Java应用程序至关重要。

本文将详细介绍JVM的工作原理,包括字节码执行过程、内存管理、垃圾回收机制等。

1. 字节码执行过程:JVM通过解释器和即时编译器(JIT)两种方式执行字节码。

解释器逐条解释字节码指令并执行,而JIT则将热点代码编译成本地机器码以提高执行效率。

JVM会根据代码的热度来决定是否使用JIT编译器。

2. 内存管理:JVM将内存分为不同的区域,包括堆、栈、方法区等。

堆用于存储对象实例,栈用于存储方法调用和局部变量,方法区用于存储类信息和静态变量。

JVM会动态地分配和回收内存,以满足程序的需求。

3. 垃圾回收机制:JVM通过垃圾回收机制自动管理内存,减少程序员手动释放内存的工作量。

垃圾回收器会定期扫描内存中的对象,标记出不再使用的对象,并将其回收。

常见的垃圾回收算法包括标记-清除、复制、标记-整理等。

4. 类加载机制:JVM使用类加载器(ClassLoader)加载字节码文件并生成对应的类对象。

类加载器按照特定的顺序逐级加载类,包括启动类加载器、扩展类加载器和应用程序类加载器。

加载过程包括加载、连接和初始化三个阶段。

5. JIT编译器:JIT编译器是JVM的一个重要组成部分,它将热点代码(被频繁执行的代码)编译成本地机器码,以提高执行效率。

JIT编译器使用即时编译技术,根据程序的运行情况来动态地进行编译。

6. 异常处理:JVM提供了异常处理机制,用于捕获和处理程序运行过程中的异常情况。

当程序抛出异常时,JVM会查找合适的异常处理器来处理异常,如果找不到则终止程序的执行。

7. 多线程支持:JVM支持多线程并发执行,通过线程调度器来协调线程之间的执行顺序。

JVM为每个线程分配独立的栈空间,以保证线程之间的数据隔离。

JAVA内存的详细讲解(整理过的)

JAVA内存的详细讲解(整理过的)

java虚拟机内存的堆区(heap),栈区(stack)和静态区(static/method)JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。

(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身.3.一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。

栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。

3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

4.由编译器自动分配释放,存放函数的参数值,局部变量的值等.静态区/方法区:1.方法区又叫静态区,跟堆一样,被所有的线程共享。

方法区包含所有的class和sta tic变量。

2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

3.全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。

代码实例(转自网络)AppMain.javapublic class AppMain //运行时, jvm 把appmain的信息都放入方法区{public static void main(String[] args) //main 方法本身放入方法区。

{Sample test1 = new Sample( " 测试1 " ); //test1是引用,所以放到栈区里, Sample是自定义对象应该放到堆里面Sample test2 = new Sample( " 测试2 " );test1.printName();test2.printName();}}Sample.javapublic class Sample //运行时, jvm 把appmain的信息都放入方法区{/** 范例名称 */private name; //new Sample实例后, name 引用放入栈区里, name 对象放入堆里/** 构造方法 */public Sample(String name){this .name = name;}/** 输出 */public void printName() //print方法本身放入方法区里。

java jvm参数

java jvm参数

java jvm参数
Java 虚拟机(JVM)参数是用来配置 Java 虚拟机运行时环境的一组参数。

它们可以用来控制 JVM 的内存使用情况,调整垃圾回收器的行为,debugging,启用额外的错误检查等等。

1、-Xms:设置JVM初始内存大小,默认是物理内存的1/64。

2、-Xmx:设置JVM最大可用内存大小,一般设置为物理内存的1/4或1/8。

3、-Xss:设置JVM单个线程栈内存大小,通常为
512K到1024K之间。

4、-XX:+UseSerialGC:开启串行垃圾收集器,使用单线程工作,可以提高性能,但是应用程序也会受到影响。

5、-XX:+PrintGCDetails:打印出垃圾回收的详细信息,方便进行性能调优。

6、-XX:MaxPermSize:设置持久代的最大内存大小,默认情况下,持久代的内存大小取决于MaxHeapSize的值。

7、-XX:NewRatio:设置新生代和老年代的比例,默认情况下是2,即新生代是老年代的一半。

8、-XX:SurvivorRatio:设置Eden区和Survivor区的比例,默认情况下是8,即Eden区是Survivor区的八分之一。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密级: 密级:内部公开 • 软通动力版权所有
Java内存机制与 内存机制与JVM介绍 内存机制与 介绍
南京研发四部IManager项目组 项目组 南京研发四部 胡来喜
密级: 密级:内部公开 • 软通动力版权所有
主要内容
一、内存简介 二、内存概述 三、Java内存机制(堆和栈) Java 四、Java 类和对象的初始化过程 五、Java的垃圾回收机制 六、Java虚拟机(JVM)参数配置说明
©2007 iSoftStone Information Service Corporation. All rights reserved.
密级: 密级:内部公开 • 软通动力版权所有
内存简介
在计算机的组成结构中,有一个很重要的部分,就是存储器。 计算机的组成结构中,有一个很重要的部分,就是存储器。 的组成结构中 存储器 存储器是用来存储程序和数据的部件,对于计算机来说, 存储器是用来存储程序和数据的部件,对于计算机来说,有了存储 才有记忆功能,才能保证正常工作。存储器的种类很多, 器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其 用途可分为主存储器和辅助存储器,主存储器又称内存储器 内存储器( 用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称 内存,港台称之为记忆体)。 内存,港台称之为记忆体)。 内存是电脑中的主要部件,它是相对于外存而言的。 内存是电脑中的主要部件,它是相对于外存而言的。我们平常使 用的程序, 操作系统、 用的程序,如Windows操作系统、打字软件、游戏软件等,一般都 操作系统 打字软件、游戏软件等, 是安装在硬盘等外存上的,但仅此是不能使用其功能的, 是安装在硬盘等外存上的,但仅此是不能使用其功能的,必须把它 们调入内存中运行,才能真正使用其功能,我们平时输入一段文字, 们调入内存中运行,才能真正使用其功能,我们平时输入一段文字, 或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里, 或玩一个游戏,其实都是在内存中进行的。就好比在一个书房里, 存放书籍的书架和书柜相当于电脑的外存, 存放书籍的书架和书柜相当于电脑的外存,而我们工作的办公桌就 是内存。通常我们把要永久保存的、大量的数据存储在外存上, 是内存。通常我们把要永久保存的、大量的数据存储在外存上,而 把一些临时的或少量的数据和程序放在内存上, 把一些临时的或少量的数据和程序放在内存上,当然内存的好坏会 直接影响电脑的运行速度。 直接影响电脑的运行速度。
©2007 iSoftStone Information Service Corporation. All rights reserved.
密级: 密级:内部公开 • 软通动力版权所有
内存概述
内存就是存储程序以及数据的地方,比如当我们在使用 内存就是存储程序以及数据的地方,比如当我们在使用WPS 处理文稿时,当你在键盘上敲入字符时,它就被存入内存中, 处理文稿时,当你在键盘上敲入字符时,它就被存入内存中,当你 选择存盘时,内存中的数据才会被存入硬( 选择存盘时,内存中的数据才会被存入硬(磁)盘。在进一步理解 它之前,还应认识一下它的物理概念。 它之前,还应认识一下它的物理概念。 内存一般采用半导体存储单元,包括随机存储器( 内存一般采用半导体存储单元,包括随机存储器(RAM), ), 只读存储器( ),以及高速缓存 )。只不过因为 只读存储器(ROM),以及高速缓存(CACHE)。只不过因为 ),以及高速缓存( )。 RAM是其中最重要的存储器。S(synchronous)DRAM 同步动态 是其中最重要的存储器。 ( 是其中最重要的存储器 ) 随机存取存储器: 随机存取存储器:SDRAM为168脚,这是目前 为 脚 这是目前PENTIUM及以上机 及以上机 型使用的内存。 型使用的内存。SDRAM将CPU与RAM通过一个相同的时钟锁在一 将 与 通过一个相同的时钟锁在一 能够共享一个时钟周期, 起,使CPU和RAM能够共享一个时钟周期,以相同的速度同步工 和 能够共享一个时钟周期 每一个时钟脉冲的上升沿便开始传递数据,速度比EDO内存提 作,每一个时钟脉冲的上升沿便开始传递数据,速度比 内存提 高50%。DDR(DOUBLE DATA RATE)RAM :SDRAM的更新 。 ( ) 的更新 换代产品,他允许在时钟脉冲的上升沿和下降沿传输数据, 换代产品,他允许在时钟脉冲的上升沿和下降沿传输数据,这样不 需要提高时钟的频率就能加倍提高SDRAM的速度。 的速度。 需要提高时钟的频率就能加倍提高 的速度
– 一种是栈内存 – 一种是堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的 栈内存中分配。 栈内存中分配。 当在一段代码块定义一个变量时, 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内 就在栈中为这个变量分配内 存空间,当超过变量的作用域后, 存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内 会自动释放掉为该变量所分配的内 存空间,该内存空间可以立即被另作他用。 存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 创建的对象和数组。 堆内存用来存放由 创建的对象和数组 在堆中分配的内存, 虚拟机的自动垃圾回收器来管理。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 虚拟机的自动垃圾回收器来管理 在堆中产生了一个数组或对象后, 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变 让栈中这个变量的取值等于数组或对象在堆内存中的首地址, 量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的 这个变量就成了数组或对象的引用变量。 这个变量就成了数组或对象的引用变量。 引用变量就相当于是为数组或对象起的一个名称, 引用变量就相当于是为数组或对象起的一个名称,以后就可以在程 序中使用栈中的引用变量来访问堆中的数组或对象。 序中使用栈中的引用变量来访问堆中的数组或对象。
©2007 iSoftStone Information Service Corporation. All rights reserved.
密级: 密级:内部公开 • 软通动力版权所有
java 内存机制(堆和栈) 内存机制(堆和栈)
• Java把内存划分成两种: 把内存划分成两种: 把内存划分成两种
©2007 iSoftStone Information Service Corporation. All rights reserved.
密级: 密级:内部公开 • 软通动力版权所有
●只读存储器(ROM) 只读存储器( ) ROM表示只读存储器(Read Only Memory),在制造 表示只读存储器( ),在制造 的时候, 表示只读存储器 ),在制造ROM的时候,信息(数据或程序)就被 的时候 信息(数据或程序) 存入并永久保存。这些信息只能读出,一般不能写入,即使机器掉电,这些数据也不会丢失。 存入并永久保存。这些信息只能读出,一般不能写入,即使机器掉电,这些数据也不会丢失。 ROM一般用于存放计算机的基本程序和数据,如BIOS ROM。其物理外形一般是双列直插式 一般用于存放计算机的基本程序和数据, 一般用于存放计算机的基本程序和数据 。 (DIP)的集成块。 )的集成块。 ●随机存储器(RAM) 随机存储器( ) 随机存储器( 随机存储器(Random Access Memory)表示既可以从中读取数据,也可以写入数据。当机器电 )表示既可以从中读取数据,也可以写入数据。 源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存, 源关闭时,存于其中的数据就会丢失。我们通常购买或升级的内存条就是用作电脑的内存,内 存条( 集成块集中在一起的一小块电路板, 存条(SIMM)就是将 )就是将RAM集成块集中在一起的一小块电路板,它插在计算机中的内存插槽上, 集成块集中在一起的一小块电路板 它插在计算机中的内存插槽上, 以减少RAM集成块占用的空间。目前市场上常见的内存条有 /条,2G/条,4G/条等。 集成块占用的空间。 条等。 以减少 集成块占用的空间 目前市场上常见的内存条有1G/ 条 条等 高速缓冲存储器( ●高速缓冲存储器(Cache) ) Cache也是我们经常遇到的概念,也就是平常看到的一级缓存 也是我们经常遇到的概念, 也是我们经常遇到的概念 也就是平常看到的一级缓存(L1 Cache)、二级缓存 、二级缓存(L2 Cache)、 、 三级缓存(L3 Cache)这些数据,它位于CPU与内存之间,是一个读写速度比内存更快的存储器。 这些数据,它位于 与内存之间,是一个读写速度比内存更快的存储器。 三级缓存 这些数据 与内存之间 当CPU向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。当CPU再次需要 向内存中写入或读出数据时,这个数据也被存储进高速缓冲存储器中。 再次需要 向内存中写入或读出数据时 这些数据时, 就从高速缓冲存储器读取数据, 这些数据时,CPU就从高速缓冲存储器读取数据,而不是访问较慢的内存,当然,如需要的数 就从高速缓冲存储器读取数据 而不是访问较慢的内存,当然, 据在Cache中没有,CPU会再去读取内存中的数据。 中没有, 会再去读取内存中的数据。 好了,现在可以解释为什么会产生诸如: 据在 中没有 会再去读取内存中的数据 好了,现在可以解释为什么会产生诸如: 常规内存、保留内存、上位内存、高端内存、扩充内存和扩展内存等不同内存类型。 常规内存、保留内存、上位内存、高端内存、扩充内存和扩展内存等不同内存类型。 ©2007 iSoftStone Information Service Corporation. All rights reserved.
密级: 密级:内部公开 • 软通力版权所有
●物理存储器和地址空间 物理存储器和地址空间 物理存储器和存储地址空间是两个不同的概念。但是由于这两者有十分密切的关系, 物理存储器和存储地址空间是两个不同的概念。但是由于这两者有十分密切的关系,而且两者 都用B、 、 、 来度量其容量大小,因此容易产生认识上的混淆。 都用 、KB、MB、GB来度量其容量大小,因此容易产生认识上的混淆。初学者弄清这两个不 来度量其容量大小 同的概念,有助于进一步认识内存储器和用好内存储器。 同的概念,有助于进一步认识内存储器和用好内存储器。 物理存储器是指实际存在的具体存储器芯片。如主板上装插的内存条和装载有系统的BIOS 物理存储器是指实际存在的具体存储器芯片。如主板上装插的内存条和装载有系统的 芯片, 芯片和装载显示BIOS的ROM芯片,以及各种适配卡上的 芯片, 的ROM芯片,显示卡上的显示 芯片 显示卡上的显示RAM芯片和装载显示 芯片和装载显示 的 芯片 RAM芯片和 芯片和ROM芯片都是物理存储器。 芯片都是物理存储器。 芯片和 芯片都是物理存储器 存储地址空间是指对存储器编码 编码地址)的范围。 编码( 存储地址空间是指对存储器编码(编码地址)的范围。所谓编码就是对每一个物理存储单 一个字节)分配一个号码,通常叫作“编址” 元(一个字节)分配一个号码,通常叫作“编址”。分配一个号码给一个存储单元的目的是为 了便于找到它,完成数据的读写,这就是所谓的“寻址” 所以, 了便于找到它,完成数据的读写,这就是所谓的“寻址”(所以,有人也把地址空间称为寻址 空间)。 空间)。 地址空间的大小和物理存储器的大小并不一定相等。举个例子来说明这个问题:某层楼共 地址空间的大小和物理存储器的大小并不一定相等。举个例子来说明这个问题: 个房间, 个房间是物理的, 有17个房间,其编号为 ~817。这17个房间是物理的,而其地址空间采用了三位编码,其范 个房间 其编号为801~ 。 个房间是物理的 而其地址空间采用了三位编码, 围是800~899共100个地址,可见地址空间是大于实际房间数量的。 个地址, 围是 ~ 共 个地址 可见地址空间是大于实际房间数量的。 对于386以上档次的微机 其地址总线为32位 因此地址空间可达2的 次方 以上档次的微机, 次方,即 。(虽 对于 以上档次的微机,其地址总线为 位,因此地址空间可达 的32次方 即4GB。(虽 。( 然如此,但是我们一般使用的一些操作系统例如windows xp、却最多只能识别或者使用 然如此,但是我们一般使用的一些操作系统例如 、却最多只能识别或者使用3.25G的 的 内存, 位的操作系统能识别并使用 位的操作系统能识别并使用4G和 以上的的内存 以上的的内存, 内存,64位的操作系统能识别并使用 和4G以上的的内存, 好了,现在可以解释为什么会产生诸如:常规内存、保留内存、上位内存、高端内存、 好了,现在可以解释为什么会产生诸如:常规内存、保留内存、上位内存、高端内存、扩 充内存和扩展内存等不同内存类型。 充内存和扩展内存等不同内存类型。
相关文档
最新文档