内存主要参数

内存种类

目前,桌面平台所采用的内存主要为DDR 1、DDR 2和DDR 3三种,其中DDR1内存已经基本上被淘汰,而DDR2和DDR3是目前的主流。

DDR1内存

第一代DDR内存

DDR SDRAM 是 Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM 的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。

DDR2内存

第二代DDR内存

DDR2 是 DDR SDRAM 内存的第二代产品。它在 DDR 内存技术的基础上加以改进,从而其传输速度更快(可达800MHZ ),耗电量更低,散热性能更优良。

DDR3内存

第三代DDR内存

DDR3相比起DDR2有更低的工作电压,从DDR2的1.8V降落到1.5V,性能更好更为省电;DDR2的4bit 预读升级为8bit预读。DDR3目前最高能够1600Mhz的速度,由于目前最为快速的DDR2内存速度已经提升到800Mhz/1066Mhz的速度,因而首批DDR3内存模组将会从1333Mhz的起跳。

三种类型DDR内存之间,从内存控制器到内存插槽都互不兼容。即使是一些在同时支持两种类型内存的Combo主板上,两种规格的内存也不能同时工作,只能使用其中一种内存。

内存SPD芯片

内存SPD芯片

SPD(Serial Presence Detect): SPD是一颗8针的EEPROM(Electrically Erasable Programmable ROM 电可擦写可编程只读存储器), 容量为256字节,里面主要保存了该内存的相关资料,如容量、芯片厂商、内存模组厂商、工作速度等。SPD的内容一般由内存模组制造商写入。支持SPD的主板在启动时自动检测SPD中的资料,并以此设定内存的工作参数。

启动计算机后,主板BIOS就会读取SPD中的信息,主板北桥芯片组就会根据这些参数信息来自动配置相应的内存工作时序与控制寄存器,从而可以充分发挥内存条的性能。上述情况实现的前提条件是在BIOS 设置界面中,将内存设置选项设为“By SPD”。当主板从内存条中不能检测到SPD信息时,它就只能提供一个较为保守的配置。

从某种意义上来说,SPD芯片是识别内存品牌的一个重要标志。如果SPD内的参数值设置得不合理,不但不能起到优化内存的作用,反而还会引起系统工作不稳定,甚至死机。因此,很多普通内存或兼容内存厂商为了避免兼容性问题,一般都将SPD中的内存工作参数设置得较为保守,从而限制了内存性能的充分发挥。更有甚者,一些不法厂商通过专门的读写设备去更改SPD信息,以骗过计算机的检测,得出与实际不一致的数据,从而欺骗消费者。

XMP技术

支持XMP技术的内存产品

BIOS里的XMP设置

Intel Extreme Memory Profiles 简称XMP,它是一种提高内存性能的技术,与NVIDIA的SLI Memory 技术类似。Intel制定了Intel Extreme Memory Profiles (Intel XMP Specification),会对DDR3内存作出认证,芯片组会自动识别通过认证的指定品牌和指定型号的内存模组产品,通过提高数据吞吐量,增加带宽等手段使其性能增加。

英特尔公司表示,由于主要面向未来的高端平台,因此这项技术并不会出现在DDR2内存模组上,要想使用“Extreme Memory”技术的首要条件就是要使用DDR3内存。

内存控制器(Memory Controller)

内存控制器是计算机系统内部控制内存并且通过内存控制器使内存与CPU之间交换数据的重要组成部分。内存控制器决定了计算机系统所能使用的最大内存容量、内存BANK数、内存类型和速度、内存颗粒数据深度和数据宽度等等重要参数,也就是说决定了计算机系统的内存性能,从而也对计算机系统的整体性能产生较大影响。

早期内存控制器集成在主板北桥芯片

传统的计算机系统其内存控制器位于主板芯片组的北桥芯片内部,CPU要和内存进行数据交换,需要经过“CPU--北桥--内存--北桥--CPU”五个步骤,在此模式下数据经由多级传输,数据延迟显然比较大从而影响计算机系统的整体性能;而AMD的K8系列CPU(包括Socket 754/939/940等接口的各种处理器)内部则整合了内存控制器,CPU与内存之间的数据交换过程就简化为“CPU--内存--CPU”三个步骤,省略了两个步骤,与传统的内存控制器方案相比显然具有更低的数据延迟,这有助于提高计算机系统的整体性能。

AMD率先在桌面平台将内存控制器集成在CPU

英特尔新酷睿家族处理器也集成了内存控制器

CPU内部整合内存控制器的优点,就是可以有效控制内存控制器工作在与CPU核心同样的频率上,而且由于内存与CPU之间的数据交换无需经过北桥,可以有效降低传输延迟。打个比方,这就如同将货物仓库直接搬到了加工车间旁边,大大减少了原材料和制成品在货物仓库和加工车间之间往返运输所需要的时间,极大地提高了生产效率。这样一来系统的整体性能也得到了提升。

内存规格参数

内存性能规格标签

内存频率

和CPU一样,内存也有自己的工作频率,频率以MHz为单位内存主频越高在一定程度上代表着内存所能达到的速度越快。内存主频决定着该内存最高能在什么样的频率正常工作。目前最为主流的内存频率为DDR2-800和DDR3-1333,作为DDR2的替代者,DDR3内存的频率已经在向3000MHz进发。

内存容量

内存的容量不但是影响内存价格的因素,同时也是影响到整机系统性能的因素。过去Windows XP平台,512M的内存还是主流,1GB已经是大容量;到了现在,64位系统开始普及,Windows Vista、Windows 7越来越多人使用,没有2GB左右的内存都不一定能保证操作的流畅度。目前,单根内存的容量主要有1GB、2GB两种,高端的还有很罕有的单根4GB超大容量内存

工作电压

内存正常工作所需要的电压值,不同类型的内存电压也不同,但各自均有自己的规格,超出其规格,容易造成内存损坏。DDR2内存的工作电压一般在1.8V左右,而DDR3内存则在1.6V左右。有的高频内存需要工作在高于标准的电压值下,具体到每种品牌、每种型号的内存,则要看厂家了。只要在允许的范围内浮动,略微提高内存电压,有利于内存超频,但是同时发热量大大增加,因此有损坏硬件的风险。

内存时序参数

BIOS内存时序设置

tCL : CAS Latency Control(tCL)

一般我们在查阅内存的时序参数时,如“8-8-8-24”这一类的数字序列,上述数字序列分别对应的参数是“CL-tRCD-tRP-tRAS”。这个第一个“8”就是第1个参数,即CL参数。

CAS Latency Control(也被描述为tCL、CL、CAS Latency Time、CAS Timing Delay),CAS latency 是“内存读写操作前列地址控制器的潜伏时间”。CAS控制从接受一个指令到执行指令之间的时间。因为CAS主要控制十六进制的地址,或者说是内存矩阵中的列地址,所以它是最为重要的参数,在稳定的前提下应该尽可能设低。

内存是根据行和列寻址的,当请求触发后,最初是tRAS(Activeto Precharge Delay),预充电后,内存才真正开始初始化RAS。一旦tRAS激活后,RAS(Row Address Strobe )开始进行需要数据的寻址。首先是行地址,然后初始化tRCD,周期结束,接着通过CAS访问所需数据的精确十六进制地址。期间从CAS 开始到CAS结束就是CAS延迟。所以CAS是找到数据的最后一个步骤,也是内存参数中最重要的。

这个参数控制内存接收到一条数据读取指令后要等待多少个时钟周期才实际执行该指令。同时该参数也决定了在一次内存突发传送过程中完成第一部分传送所需要的时钟周期数。这个参数越小,则内存的速度越快。必须注意部分内存不能运行在较低的延迟,可能会丢失数据。而且提高延迟能使内存运行在更高的频率,所以需要对内存超频时,应该试着提高CAS延迟。

该参数对内存性能的影响最大,在保证系统稳定性的前提下,CAS值越低,则会导致更快的内存读写操作。

内存标签

tRCD : RAS to CAS Delay

该值就是“8-8-8-24”内存时序参数中的第2个参数,即第2个“8”。RAS to CAS Delay(也被描述为:tRCD、RAS to CAS Delay、Active to CMD),表示"行寻址到列寻址延迟时间",数值越小,性能越好。对内存进行读、写或刷新操作时,需要在这两种脉冲信号之间插入延迟时钟周期。在JEDEC规范中,它是排在第二的参数,降低此延时,可以提高系统性能。如果你的内存的超频性能不佳,则可将此值设为内存的默认值或尝试提高tRCD值。

tRP : Row Precharge Timing(tRP)

该值就是“8-8-8-24”内存时序参数中的第3个参数,即第3个“8”。Row Precharge Timing (也被描述为:tRP、RAS Precharge、Precharge to active),表示"内存行地址控制器预充电时间",预充电参数越小则内存读写速度就越快。tRP用来设定在另一行能被激活之前,RAS需要的充电时间。

tRAS : Min RAS Active Timing

该值就是该值就是“8-8-8-24”内存时序参数中的最后一个参数,即“24”。Min RAS Active Time (也被描述为:tRAS、Active to Precharge Delay、Row Active Time、Precharge Wait State、Row Active Delay、Row Precharge Delay、RAS Active Time),表示“内存行有效至预充电的最短周期”,调整这个参数需要结合具体情况而定,一般我们最好设在24~30之间。这个参数要根据实际情况而定,并不是说越大或越小就越好。

如果tRAS的周期太长,系统会因为无谓的等待而降低性能。降低tRAS周期,则会导致已被激活的行地址会更早的进入非激活状态。如果tRAS的周期太短,则可能因缺乏足够的时间而无法完成数据的突发传输,这样会引发丢失数据或损坏数据。该值一般设定为CAS latency + tRCD + 2个时钟周期。

DDR2—DDR3的换代交接已经基本完成

对于大多数人来说,内存这个小硬件选好容量和频率,然后插上主板用上就行了,对它的很多小参数完全不在意。所以,行业厂商也会提供比较傻瓜式的读取内存SPD芯片的参数信息,自动设置各项小参,简单好用;更有简单的超频设置——XMP技术,让普通用户也能简单地享受超频增值的乐趣。当然,真正的玩家在超频时为了达到最理想的效果,还是更倾向于手动设置各项小参。希望通过这篇文章,大家能对内存的各项参数有更深的理解,并在使用上有一定的帮助。

第十一讲存储器管理之连续分配方式

第十一讲存储器管理之连续分配方式 所谓连续分配方式:是指为一个用户程序分配一个连续的内存空间。 又可把连续分配方式分为:单一连续分配,固定分区分配,动态分区分配,动态重定位分区分配,四种方式。 1 单一连续分配(单独分区分配) 最简单的一种存储管理方式,但只能用于单用户、单任务的OS中。 概念:单一连续分配就是整个主存区域的用户空间均归一个用户作业使用。 存储管理方法:将内存分为系统区(内存低端,分配给OS用)和用户区(内存高端,分配给用户用)。其中用户区是指除了系统区外的内存空间,提供给用户程序使用。采用静态分配方式,即作业一旦进入内存,就要等待它运行结束后才能释放内存。 主要特点:管理简单,只需小量的软件和硬件支持,便于用户了解和使用。但因内存中只装入一道作业运行,内存空间浪费大,各类资源的利用率也不高。 例子:一个容量为256KB的内存,操作系统占用32KB,剩下224KB全部分配给用户作业,如果一个作业仅需64KB,那么就有160KB的存储空间被浪费。 2 固定分区分配 分区分配方式是满足多道程序设计需要的一种最简单的存储管理方法。 2.1 思想:将内存分成若干个分区(大小相等/不相等),除OS占一区外,其余的每一个分区容纳一个用户程序。这样来实现多道并发。 2.2 分区划分方法:分区大小相等,分区大小不等。但事先必须确定,在运行时不能改变。即分区大小及边界在运行时不能改变。 2.3 内存分配: 首先:要先建立一张分区说明表或使用表,以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)。 其次:当某个用户程序要装入内存时,由内存分配程序检索分区说明表,从表中找出一个满足要求的尚未分配的分区分配该程序,同时修改说明表中相应分区的状态;若找不到大小足够的分区,则拒绝为该程序分配内存。 第三:当程序执行完毕,释放占用的分区,管理程序将修改说明表中相应分区的状态为未分配,实现内存资源的回收。 2.4 特点 主要特点:管理简单,但因作业的大小并不一定与某个分区大小相等,从而使一部分存储空间被浪费。所以主存的利用率不高 3 动态分区分配 3.1 基本思想:根据进程的实际需要,动态的为其分配内存空间。因此分区大小是动态可变的,分区的个数也是可变的。 3.2 主要特点 管理简单,只需小量的软件和硬件支持,便于用户了解和使用。进程的大小与某个分区大小相等,从而主存的利用率有所提高。 3.3 分区分配的数据结构 为描述空闲分区合已分配的分区,引入如下数据结构。 3.3.1空闲分区表 用于记录每个空闲分区的情况。每个空闲分区占一个表目,表目重含有分区序号,分区起始地址,分区大小等数据项。如下图

如何看内存条型号(容量)

金士顿 1.KVR代表kingston value RAM 2.外频速度单位:兆赫 3.一般为X 4. 64为没有ECC;72代表有ECC 5.有S字符表示笔记本专用内存,没有S字符表示普通的台式机或是服务器内存 6. 一般为C C3:CAS=3; C2.5:CAS=2.5; C2:CAS=2 7.分隔符号 8.内存的容量 我们以金士顿ValueRAM DDR内存编号为例: 编号为ValueRAM KVR400X64C25/256 这条内存就是.金士顿ValueRAM 外频400MHZ 不带有ECC校验 CAS=2.5 256M内存 HY(现代HYNIX) 现代是韩国著名的内存生产厂,其产品在国内的占用量也很大. HY的编码规则: HY 5X X XXX XX X X X X-XX XX 1 2 3 4 5 6 7 8 9 10 11 定义: 1、HY代表现代. 2、一般是57,代表SDRAM. 3、工艺:空白则是5V, V是3V, U是2.5V. 4、内存单位容量和刷新单位:16:16M4K刷新;64:64M,8K刷新;65:64M,4K刷新;128:128M,8K刷新;129:128M,4K刷新. 5、数据带宽:40:4位,80:8位,16:16位,32:32位. 6、芯片组成:1:2BANK,2:4BANK;3:8BANK; 7、I/O界面:一般为0 8、产品线:从A-D系列 9、功率:空白则为普通,L为低功耗. 10、封装:一般为TC(TSOP) 11、速度:7:7NS,8:8NS,10P:10NS(CL2&3),10S:10NS,(PC100,CL3),10:

两种常见的内存管理方法:堆和内存池

两种常见的内存管理方法:堆和内存池 本文导读 在程序运行过程中,可能产生一些数据,例如,串口接收的数据,ADC采集的数据。若需将数据存储在内存中,以便进一步运算、处理,则应为其分配合适的内存空间,数据处理完毕后,再释放相应的内存空间。为了便于内存的分配和释放,AWorks提供了两种内存管理工具:堆和内存池。 本文为《面向AWorks框架和接口的编程(上)》第三部分软件篇——第9章内存管理——第1~2小节:堆管理器和内存池。 本章导读 在计算机系统中,数据一般存放在内存中,只有当数据需要参与运算时,才从内存中取出,交由CPU运算,运算结束再将结果存回内存中。这就需要系统为各类数据分配合适的内存空间。 一些数据需要的内存大小在编译前可以确定。主要有两类:一类是全局变量或静态变量,这部分数据在程序的整个生命周期均有效,在编译时就为这些数据分配了固定的内存空间,后续直接使用即可,无需额外的管理;一类是局部变量,这部分数据仅在当前作用域中有效(如函数中),它们需要的内存自动从栈中分配,也无需额外的管理,但需要注意的是,由于这一部分数据的内存从栈中分配,因此,需要确保应用程序有足够的栈空间,尽量避免定义内存占用较大的局部变量(比如:一个占用数K内存的数组),以避免栈溢出,栈溢出可能破坏系统关键数据,极有可能造成系统崩溃。 一些数据需要的内存大小需要在程序运行过程中根据实际情况确定,并不能在编译前确定。例如,可能临时需要1K内存空间用于存储远端通过串口发过来的数据。这就要求系统具有对内存空间进行动态管理的能力,在用户需要一段内存空间时,向系统申请,系统选择一段合适的内存空间分配给用户,用户使用完毕后,再释放回系统,以便系统将该段内存空间回收再利用。在AWorks中,提供了两种常见的内存管理方法:堆和内存池。9.1 堆管理器

计算DDR3系统内存的功耗

Technical Note Calculating Memory System Power for DDR3 Introduction DDR3 SDRAM provides additional bandwidth over previous DDR and DDR2 SDRAM. In addition to the premium performance, DDR3 has a lower operating voltage range. The result can be a higher bandwidth performing system while consuming equal or less system power. However, it is not always easy to determine the power consumption within a system application from the data sheet specification. This technical note details how DDR3 SDRAM consumes power and provides the tools that system designers can use to estimate power consumption in any specific system. In addition to offering tools and techniques for calculating system power, Micron’s DDR3- 1067 “Data Sheet Specifications” on page20 and a DDR3 Power Spreadsheet Usage Example on page20 are provided. Table1 describes the command abbreviations found in the following sections. Table 1: Abbreviation Definitions Abbreviation Definition ACT ACTIVATE BL Burst length BC Burst chop PRE PRECHARGE ODT On-die termination RD READ REF REFRESH WR WRITE DRAM Operation To estimate the power consumption of a DDR3 SDRAM, it is necessary to understand the basic functionality of the device (see Figure1 on page2). The operation of a DDR3 device is similar to that of a DDR2. For both devices, the master operation of the DRAM is controlled by clock enable (CKE). If CKE is LOW, the input buffers are turned off. To allow the DRAM to receive commands, CKE must be HIGH, thus enabling the input buffers and propagates the command/ address into the logic/decoders on the DRAM. During normal operation, the first command sent to the DRAM is typically an ACT command. This command selects a bank and row address. The data, which is stored in the cells of the selected row, is then transferred from the array into the sense amplifiers. The portion of the DRAM consuming power in the ACT command is shown in blue and gold in Figure1 on page2. PDF: 09005aef829559ff/Source: 09005aef828dcdbf Micron Technology, Inc., reserves the right to change products or specifications without notice. TN41_01DDR3 Power.fm-Rev. B 8/07 EN?2007 Micron Technology, Inc. All rights reserved.

操作系统课程设计--连续动态分区内存管理模拟实现

(操作系统课程设计) 连续动态分区内存 管理模拟实现

目录 《操作系统》课程设计 (1) 引言 (3) 课程设计目的和内容 (3) 需求分析 (3) 概要设计 (3) 开发环境 (4) 系统分析设计 (4) 有关了解内存管理的相关理论 (4) 内存管理概念 (4) 内存管理的必要性 (4) 内存的物理组织 (4) 什么是虚拟内存 (5) 连续动态分区内存管理方式 (5) 单一连续分配(单个分区) (5) 固定分区存储管理 (5) 可变分区存储管理(动态分区) (5) 可重定位分区存储管理 (5) 问题描述和分析 (6) 程序流程图 (6) 数据结构体分析 (8) 主要程序代码分析 (9) 分析并实现四种内存分配算法 (11) 最先适应算 (11) 下次适应分配算法 (13) 最优适应算法 (16)

最坏适应算法......................................................... (18) 回收内存算法 (20) 调试与操作说明 (22) 初始界面 (22) 模拟内存分配 (23) 已分配分区说明表面 (24) 空闲区说明表界面 (24) 回收内存界面 (25) 重新申请内存界面..........................................................26. 总结与体会 (28) 参考文献 (28) 引言 操作系统是最重要的系统软件,同时也是最活跃的学科之一。我们通过操作系统可以理解计算机系统的资源如何组织,操作系统如何有效地管理这些系统资源,用户如何通过操作系统与计算机系统打交道。 存储器是计算机系统的重要组成部分,近年来,存储器容量虽然一直在不断扩大,但仍不能满足现代软件发展的需要,因此,存储器仍然是一种宝贵而又紧俏的资源。如何对它加以有效的管理,不仅直接影响到存储器的利用率,而且还对系统性能有重大影响。而动态分区分配属于连续分配的一种方式,它至今仍在内存分配方式中占有一席之地。 课程设计目的和内容: 理解内存管理的相关理论,掌握连续动态分区内存管理的理论;通过对实际问题的编程实现,获得实际应用和编程能力。

计算机基础知识试题及答案(全)..

《大学计算机》基础知识试题及答案 一、单选题: (说明:将认为正确答案的字母填写在每小题后面的括号内) 1.世界上第一台通用电子数字计算机诞生于( A )。 A.美国B.英国C.德国D.日本 2.世界上第一台通用电子数字计算机诞生于( B )。 A.1953年B.1946年C.1964年D.1956年 3.第一台电子计算机是1946年在美国研制的,该机的英文缩写名是(A )。 A.ENIAC B.EDVAC C.EDSAC D.MARK-II 4.一个完整的微型计算机系统应包括(C )。 A.计算机及外部设备 B.主机箱、键盘、显示器和打印机 C.硬件系统和软件系统 D.系统软件和系统硬件 5.计算机的中央处理器CPU包括运算器和(C )两部分。 A.存储器B.寄存器C.控制器D.译码器 6.下列设备中,( D )不是微型计算机的输出设备。 A.打印机B.显示器C.绘图仪D.扫描仪 7.下列各项中,不属于多媒体硬件的是(D )。 A.光盘驱动器 B.视频卡 C.音频卡 D.加密卡 8.计算机中对数据进行加工与处理的部件,通常称为( A )。 A.运算器 B.控制器 C.显示器 D.存储器 9.运算器的组成部分不包括( B )。 A.控制线路 B.译码器 C.加法器 D.寄存器 10.把内存中的数据传送到计算机的硬盘,称为(D )。 A.显示 B.读盘 C.输入 D.写盘 11.用MIPS为单位来衡量计算机的性能,它指的是计算机的( B ),指的是每 秒处理的百万级的机器语言指令数。 A.传输速率 B.运算速度 C.字长 D.存储器容量 12.计算机硬件的核心部件是( A )。 A.中央处理器B.存储器C.运算器D.控制器 13.在外部设备中,打印机属于计算机的( B )设备。 A.输入B.输出C.外存储D.内存储 14.CGA、EGA和VGA标志着(C )的不同规格和性能。 A.打印机 B.存储器 C.显示器 D.硬盘 15.硬盘上原存的有效信息,在下列哪种情况下会丢失( C )。 A.通过海关的X射线监视仪 B.放在盒内半年没有使用

计算机存储单位

字节就是由8个位所组成,可代表一个字符(A~Z)、数字(0~9)、或符号(,、?!%&+-*/),就是内存储存数据的基本单位。 1 byte = 8 bit 1 KB = 1024 bytes =210 bytes 1 MB = 1024 KB = 220 bytes 1 GB = 1024 MB = 230 bytes 位:“位(bit)”就是电子计算机中最小的数据单位。每一位的状态只能就是0或1。 字节:8个二进制位构成1个“字节(Byte)”,它就是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。 字:“字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果就是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字就是计算机进行数据处理与运算的单位。 KB:在一般的计量单位中,通常K表示1000。例如:1公里= 1000米,经常被写为1km;1公斤=1000克,写为1kg。同样K在二进制中也有类似的含义。只就是这时K表示1024,也就就是2的10次方。1KB表示1K个Byte,也就就是1024个字节。 MB:计量单位中的M(兆)就是10的6次方,见到M自然想起要在该数值的后边续上六个0,即扩大一百万倍。在二进制中,MB也表示到了百万级的数量级,但1MB不正好等于1000000字节,而就是1048576字节,即1MB = 2E+20 Bytes = 1048576Bytes。 计算机系统中的数据的计量单位。 在标准10进制公制度量系统中,倍率关系如下所示 kilo (k)* = 10 ^ 3 = 1,000 thousand 千 mega (M) = 10 ^ 6 = 1,000,000 million 百万 giga (G) = 10 ^ 9 = 1,000,000,000 billion 十亿 tera (T) = 10 ^ 12 = 1,000,000,000,000 trillion 万亿 * 在公制系统中, "k" 或者"kilo" 前缀只使用小写字母 在计算机/通讯行业中,计算数据传送速度也使用每秒传送公制数据量来计算 1 bit (b) = 0 or 1 = one binary digit 一个二进制位元 1 kilobit(kb)=10^3 bits = 1,000 bits 一千位元 1 Megabit(Mb)=10^6 bits = 1,000,000 bits 一百万位元 1 Gigabit(Gb)=10^9 bits = 1,000,000,000 bits 一万亿位元 根据进制规定,传送速度可以有两种表示方法bps 与Bps,但就是她们就是有严格区别。Bps中的B 使用的就是二进制系统中的Byte字节,bps中的b 就是十进制系统中的位元。 在我们常说的56K拨号,100M局域网都就是bps计量,当用于软件下载时,下载工具一般又以Bps计算,所以它们之间有8 bit=1 Byte 的换算关系,那么56Kbps拨号极限下载速度就是56Kbps/8=7KBps 每秒下载7K字节。 在数据存储,容量计算中,一般又结合公制的进制与二进制的数据计算方法来计算 (二进制) 1 byte (B) = 8 bits (b) 字节=8个二进制位 1 Kilobyte(K/KB)=2^10 bytes=1,024 bytes 千字节 1 Megabyte(M/MB)=2^20 bytes=1,048,576 bytes 兆字节 1 Gigabyte(G/GB)=2^30 bytes=1,073,741,824 bytes 千兆字节 1 Terabyte(T/TB)=2^40 bytes=1,099,511,627,776 bytes吉字节 一些存储器厂家特别就是硬盘厂家就更紧密结合十进制来计算,这就就是为什么操作系统显示的容量与厂家标示的容量有些一些差异的原因

一种嵌入式系统的内存分配方案

一种嵌入式系统的内存分配方案 摘要:实时性、可靠性的要求,使得许多嵌入式应用使用自己的内存管理程序。本文探讨嵌入式系统中对内存管理的要求、存在的问题以及可能的解决策略;介绍一种“一次分配,多次使用”的动态内存分配方法,并给出2个例子。 关键词:嵌入式系统内存管理一次分配多次使用 1 嵌入式系统中对内存分配的要求 ①快速性。嵌入式系统中对实时性的保证,要求内存分配过程要尽可能地快。因此在嵌入式系统中,不可能采用通用操作系统中复杂而完善的内存分配策略,一般都采用简单、快速的内存分配方案。当然,对实性要求的程序不同,分配方案也有所不同。例如,VxWorks采用简单的最先匹配如立即聚合方法;VRTX中采用多个固定尺寸的binning方案。 ②可靠性。也就是内存分配的请求必须得到满足,如果分配失败可能会带来灾难性的后果。嵌入式系统应用的环境千变万化,其中有一些是对可靠性要求极高的。比如,汽车的自动驾驶系统中,系统检测到即将撞车,如果因为内存分配失败而不能相应的操作,就会发生车毁人亡的事故,这是

不能容忍的。 ③高效性。内存分配要尽可能地少浪费。不可能为了保证满足所有的内存分配请求而将内存配置得无限大。一方面,嵌入式系统对成本的要求使得内存在其中只是一种很有限的资源;另一方面,即使不考虑成本的因素,系统有限的空间和有限的板面积决定了可配置的内存容量是很限的。 静态分配与动态分配 究竟应用使用静态分配还是动态分配,一直是嵌入式系统设计中一个争论不休的总是。当然,最合适的答案是对于不同的系统采用不同的方案。如果是系统对于实时性和可靠性的要求极高,不能容忍一点延时或者一次分配失败,当然需要采用静态分配方案,也就是在程序编译时所需要的内存都已经分配好了。例如,火星探测器上面的嵌入式系统就必须采用静态分配的方案。另外,WindRiver公司的一款专门用于汽车电子和工业自动化领域的实时操作系统OSEKWorks中就不支持内存的动态分配。在这样的应用场合,成本不支持内存的动态分配。在这样的应用场合,成本不是优先考虑的对象,实时性和可靠性才是必须保证的。当然,采用静态分配一个不可避免的总是就是系统失去了灵活性,必须在设计阶段就预先知道所需要的内存并对之作出分配;必须在设计阶段就预先考虑到所有可能的情况,因为一旦出现没有考虑到的情况,系统就无法处理。这样的分配方

内存中的各区域的分配

程序中用来存放数据的内存分为四块,其实另有一块用于存放代码,这里我们不讨论,这四块分别是: 1、全局区(静态区)(static):全局变量和静态变量都存储在这块区域,与其他变量的明显区别就是生命周期不同,在程序结束时,系统会释放这块资源 2、文字常量区:常量字符串就是放在这块区域,即是我们常说起的常量池。这块也是在程序结束时由系统释放。 3、栈区(stack):存放函数的参数值,局部变量的值等。这块的数据大家就很熟悉了,在进入作用域时分配占用内存,离开作用域时释放占用内存 4、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由系统回收。由于这个原因,在C和C++中就有能产生大量程序员分配但忘记释放的堆区内存,造成可使用内存越来越少,这个被称之为内存泄露。而在java中,因为有了垃圾收集机制,这样的内存会被自动处理掉,所以在java中,反倒不需要程序员去释放内存了。 那么栈和堆的区别到底在哪里呢? 1、内存分配方面: 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式是类似于链表。可能用到的关键字如下:new、malloc、delete、free等等。 栈:由编译器(Compiler)自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、申请方式方面: 堆:需要程序员自己申请,并指明大小。在c中malloc函数如p1 = (char *)malloc(10);在C++,java中用new运算符,但是注意p1、p2本身是在栈中的。因为他们还是可以认为是局部变量。 栈:由系统自动分配。例如,声明在函数中一个局部变量int b;系统自动在栈中为b 开辟空间。 3、系统响应方面: 堆:操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码中的delete语句才能正确的释放本内存空间。另外由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。 栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。 4、大小限制方面: 堆:是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。 栈:在Windows下, 栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是固定的(是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。 5、效率方面: 堆:是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方

计算机中容量单位B、KB、MB、GB和TB的关系

字节(Byte,简称B)与K、KB、M、MB的关系 计算机中各种存储容量的单位都是用字节(Byte简为B)来表示,此外还有KB、MB、GB和TB,他们的关系是: 1KB=1024Bytes=2的10次方Bytes 1MB=1024KB=2的20次方Bytes 1GB=1024MB=2的30次方Bytes 1TB=1024GB=2的40次方Bytes B(字节)、KB(K)、MB(M、兆)、GB(G)、TB 是大小不同的单位。 B :B就是Byte(字节)的简称,它是一个电脑存储的基本单位。1字节=8 位,就是有8个二进制数组成。1个英文字符是1个字节,也就是1B;1个汉字为2个字符,也就是2B。 K (KB):K 是千的意思,K就是KB,1024字节为1KB,即:1024B=1KB M (MB、兆):M 是兆的意思,M就是MB,1024KB=1MB G(GB):1024 MB = 1 GB TB:还有TB一般用的就不多了,1TB=1024GB K、M、G都是KB、MB、GB的简称。平时我们说的1兆就是1M(MB),1(发音“计”)就是1G(GB)。我们的照片一般是104KB、209KB、1.45MB、2.45MB、3.32MB等等。 K=KB、M=MB、 1MB=1024KB 1024 B = 1 KB ;1024 KB = 1 MB ;1024 MB = 1 GB K=kilo KB=kilobyte M=mega MB=megabyte Kb=kilobit Mb=megabit 1KB=1024Bytes=2的10次方Bytes 1MB=1024KB=2的20次方Bytes

内存规格参数

内存规格参数 内存这样小小的一个硬件,却是PC系统中最必不可少的重要部件之一。而对于入门用户来说,可能从内存的类型、工作频率、接口类型这些简单的参数的印象都可能很模糊的,而对更深入的各项内存时序小参数就更摸不着头脑了。而对于进阶玩家来说,内存的一些具体的细小参数设置则足以影响到整套系统的超频效果和最终性能表现。如果不想当菜鸟的话,虽然不一定要把各种参数规格一一背熟,但起码有一个基本的认识,等真正需要用到的时候,查起来也不会毫无概念。 内存种类 目前,桌面平台所采用的内存主要为DDR 1、DDR 2和DDR 3三种,其中DDR1内存已经基本上被淘汰,而DDR2和DDR3是目前的主流。 DDR1内存 第一代DDR内存 DDR SDRAM 是 Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM 的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。 DDR2内存

第二代DDR内存 DDR2 是 DDR SDRAM 内存的第二代产品。它在 DDR 内存技术的基础上加以改进,从而其传输速度更快(可达800MHZ ),耗电量更低,散热性能更优良。 DDR3内存 第三代DDR内存 DDR3相比起DDR2有更低的工作电压,从DDR2的1.8V降落到1.5V,性能更好更为省电;DDR2的4bit 预读升级为8bit预读。DDR3目前最高能够1600Mhz的速度,由于目前最为快速的DDR2内存速度已经提升到800Mhz/1066Mhz的速度,因而首批DDR3内存模组将会从1333Mhz的起跳。

JVM内存分配(栈堆)与JVM回收机制

Java 中的堆和栈 简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 具体的说: 栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义: int a = 3; int b = 3; 编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找栈中是否有3这个值,如果没找到,就将3存放进来,然后将a指向3。接着处理int b = 3;在创建完b的引用变量后,因为在栈中已经有3这个值,便将b直接指向3。这样,就出现了a与b同时均指向3的情况。这时,如果再令a=4;那么编译器会重新搜索栈中是否有4值,如果没有,则将4存放进来,并令a指向4;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b 的值。要注意这种数据的共享与两个对象的引用同时指向一个对象的这种共享是不同的,因为这种情况a的修改并不会影响到b, 它是由编译器完成的,它有利于节省空间。而一个对象引用变量修改了这个对象的内部状态,会影响到另一个对象引用变量。 String是一个特殊的包装类数据。可以用: String str = new String("abc"); String str = "abc"; 两种的形式来创建,第一种是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。 而第二种是先在栈中创建一个对String类的对象引用变量str,然后查找栈中有没有存放"abc",如果没有,则将"abc"存放进栈,并令str指向”abc”,如果已经有”abc”则直接令 str指向“abc”。 比较类里面的数值是否相等时,用equals()方法;当测试两个包装类的引用是否指向同一个对象时,用==,下面用例子说明上面的理论。 String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); //true

地址总线,字长,内存容量,寻址范围之间的计算

地址总线,字长,内存容量,寻址范围之间的计算 处理机字长是指处理机能同时处理(或运算)的位数,即同时处理多少位(bit)数据。比如Intel Pentium 4处理器字长为32位,它能同时处理32位的数据,也即它的数据总线为32位。以前的处理器比如8086,则为16位处理器,现在新兴的64位处理器,它的数据吞吐能力更强,即能同时对64位数据进行运算。处理器的字长越大,说明它的运算能力越强。如果讲处理器的寻址范围,则要看处理器的地址总线的位数,而不是它的字长!这个要明白!比如Intel Pentium 4处理器的数据总线为32位,地址总线也是32位。8086的数据总线为16位,地址总线为20位。新兴的64位处理器的数据总线为64位,地址总线大部分是32位。这个清楚之后,再看地址总线与寻址范围的关系。存储单元是以字节(byte)为单位,N根地址总线能访问2的N次方个存储单元。于是有32位地址总线可以访问2的32次方个存储单元,即4GB。8086处理器字长是16位,它的地址总线是20位,所以能访问2的20次方个存储单元,即1MB。另外一点需要注意的就是,如果有些题目说:按“字”寻址,就说明是存储单元大小为字长的位数,按“字节”寻址,说明存储单元式字节的大小(个人理解,没有考证) 下面通过举几个例子,来说明这些关系 1、某计算机字长32位,存储容量8MB。按字编址,其寻址范围为(0~2M-1) 计算步骤:8MB字节=8*1024*1024*8位。所以8MB/32位=2M. 2、某计算机字长32位,其存储容量为4MB,若按半字编址,它的寻址范围是(0-2M-1)计算步骤:若按半字就是16位了4MB=4*1024*1024*8位,所以4MB/16 = 2M; 3、字长为32位.存储器容量为64KB.按字编址的寻址范围是多少计算步骤:64K字节=64*1024*8位. 所以64KB/32位=(64*1024*8)/32=16*1024=16K 故寻址范围为: 0-16K-1 4、某机字长32位,存储容量1MB,若按字编址,它的寻址范围是什么? 解释:容量1M=2*1024*1024 位一个字长是32 位 所以,寻址范围是二者相除=256K 5、对于存储器的容量扩展,有位扩展,字扩展,字位扩展三种形式。对于字位扩展,一个存储器的容量为M*N位,若使用L*K位存储器芯片,那么,这个存储器共需(M*N)/(L*K)个存储器芯片。 下面分析一下字位扩展的习题:设有一个具有14位地址和8位字长的存储器,问该存储器容量有多大?如果存储器由1K*1静态存储器组成,需多少芯片?多少位地址作芯片选择? 分析:位扩展指的是用多个存储器对字长进行扩充。本题中所用的存储器芯片字长是1位,要扩展到8位,就得用8片。原题中说,“存储器由1K*1静态存储器组成”,其中,1K 指的是存储单元个数,它决定地址的位数,因为2的10次方是1K,所以它用10根地址线,4位地址线用来作芯片选择。

JAVA虚拟机内存分配机制

JA V A虚拟机内存分配原则 Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一个数组或对象后,还可以在栈中定义一个特殊的变量,让栈中这个变量的取值等于数组或对象在堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量。 引用变量就相当于是为数组或对象起的一个名称,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或对象。 具体的说: 栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java 的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义: int a = 3; int b = 3;

内存容量大

习题1 一、选择题 1. 计算机网络最突出的优点是____。 A. 精度高 B. 内存容量大 C. 运算速度快 D. 共享资源 2. 在组建广域网时,经常采用的拓扑结构是_____。 A. 星型 B. 总线型 C. 环型 D. 网状型 3. 计算机网络按其所涉及范围的大小和计算机之间互联的距离,其类型可分为_____。 A. 局域网、广域网和混合网 B. 分布的、集中的和混合的 C. 局域网和广域网 D. 通信网、因特网和万维网 二、填空题 1. 计算机网络的拓扑结构主要有________、_________、_________、_________和_________。 2. 按照服务器和工作站配置的不同,可以将网络划分为_______、________和_________。 3. 按对数据的组织方式的不同,可以将网络划分为_______、________和_________。 三、简答题 1. 网络操作系统与一般的操作系统有什么区别? 2. 什么是计算机网络?计算机网络是由什么组成的? 3. 什么是拓扑结构?如何选择网络拓扑结构? 4. 计算机网络的发展可划分为几个阶段?每个阶段各有什么特点? 5. 在什么样的环境下最适用于简单的总线结构? 习题2 一、单项选择题 1. 下列哪一项最好地描述了模拟信号? A. 用图表示像是一个正弦波 B. 有两个不同的状态 C. 以每秒周期数计量 D. B和C E. A和C 2. 波特率等于 A. 每秒传输的比特 B. 每秒钟可能发生的信号变化的次数 C. 每秒传输的周期数 D. 每秒传输的字节数 3. 假定一条线路每1/16s采样一次,每个可能的信号变化都运载3bit的信息。问传输速率是每秒多少个 比特? A. 16 b/s B. 3 b/s C. 24 b/s D. 48 b/s 4. 半双工支持哪一种类型的数据流? A. 一个方向 B. 同时在两个方向 C. 两个方向,但每一时刻仅可以在一个方向上有数据流 5. 在下列传输介质中,哪一种错误率最低? A. 同轴电缆 B. 光缆 C. 微波 D. 双绞线 6. 多路复用器的主要功能是什么? A. 执行数/模转换 B. 减少主机的通信处理负荷

计算机储存容量基本单位

电脑世界是由0与1组成,其中有数以万计的线路,一条线路传递一个信号,而0代表没有信号,1代表有信号,就像电源开关一样,同一时间只可能有一种状态,所以电脑最基本的单位就是一条线路的信号,我们就把它称作“位”,英文叫做bit,缩写为b。“位”和“字节”其实都是电脑的计量单位,我们可以理解成字节是由位组成的,一个“字节”等于8“位”,Byte是它的缩写."位" (bit)这个单位太小,所以字节(Byte)是电脑存储容量的基本计量单位。Byte 可简写为B,一个字节由八个二进制位组成,其最小值为0,最大值为11111111,一个存储单元能存储一个字节的内容。 这些单位之间的换算关系为: Kilo K 1K字节=1,024个字节 Mega M 1M字节= 1,048,576字节 Giga G 1G字节=1,073,741,824字节 Tera T 1T字节=1,099,511,627,776字节 Peta P 1P字节=1,125,899,906,842,624字节 Exa E 1E字节=1,152,921,504,606,846,976字节 Zetta Z 1Z字节=1,180,591,620,717,411,303,424字节 Yotta Y 1Y字节=1,208,925,819,614,629,174,706,176字节 根据上表可以算出40GB的硬盘应该可以存储40GB×1,073,741,824字节=4294 9672960字节的数据,但实际不然。 计算机中采用二进制,这样就造成在操作系统中对容量的计算是以每1024为一进制的,每1024字节为1KB,每1024KB为1MB,每1024MB为1GB;而硬盘厂商在计算容量时,则是以每1000为一进制的,每1000“字节”为1KB,每1000KB 为1MB,每1000MB为1GB,这二者进制上的差异造成了硬盘容量缩水。 所以标称40GB的硬盘,在操作系统中显示只有38GB;80GB的硬盘只有75GB;而1 20GB的硬盘则只有114GB了。 1、计算机存储信息的最小单位,称之为位(bit),音译比特,二进制的一个“0” 或一个“1”叫一位。 2、计算机存储容量基本单位是字节(Byte),音译为拜特,8个二进制位组成1 个字节,一个标准英文字母占一个字节位置,一个标准汉字占二个字节位置。3、计算机存储容量大小以字节数来度量,1024进位制: 1024B=1K(千)B 1024KB=1M(兆)B 1024MB=1G(吉)B 1024GB=1T(太)B 以下还有PB、EB、ZB、YB 、NB、DB,一般人不常使用了。 1字节=8bit 1KB=1024字节 1MB=1024KB 1GB=1024MB

Java内存区域划分、内存分配原理

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 Java 内存区域划分、内存分配原理 2014/11/16 2448 运行时数据区域 Java 虚拟机在执行Java 的过程中会把管理的内存划分为若干个不同的数据区域。这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程 的启动而存在,而有的区域则依赖线程的启动和结束而创建和销毁。 Java 虚拟机包括下面几个运行时数据区域: 程序计数器 程序计数器是一块较小的区域,它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的模型里,字节码指示器就是通过改变程序计数器的值 来指定下一条需要执行的指令。分支,循环等基础功能就是依赖程序计数器来完成的。 由于java 虚拟机的多线程是通过轮流切换并分配处理器执行时间来完成,一个处理器同一时间只会执行一条线程中的指令。为了线程恢复后能够恢复正确的 执行位置,每条线程都需要一个独立的程序计数器,以确保线程之间互不影响。因 此程序计数器是“线程私有”的内存。 如果虚拟机正在执行的是一个Java 方法,则计数器指定的是字节码指令对应的地址,如果正在执行的是一个本地方法,则计数器指定问空undefined。程序计数器区域是Java 虚拟机中唯一没有定义OutOfMemory 异常的区域。 Java 虚拟机栈 和程序计数器一样也是线程私有的,生命周期与线程相同。虚拟机栈描述的是Java 方法执行的内存模型:每个方法被执行的时候都会创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法出口等信息。每一个方法被调用的过程就对应 一个栈帧在虚拟机栈中从入栈到出栈的过程。

相关文档
最新文档