标签:#記憶體管理

共 38 篇文章

引用计数

引用计数(,RC)是计算机编程语言中的一种内存管理技术,是指将资源(可以是对象、内存或磁盘空间等等)的被引用次数保存起来,当被引用次数变为零时就将其释放的过程。使用引用计数技术可以实现自动资源管理的目的。同时引用计数还可以指使用引用计数技术回收未使用资源的垃圾回收算法。 当创建一个对象的实例并在堆上申请内存时,对象的引用计数就为1,在其他对象中需要持有这个对象时,就需要把该对象的引用计数加1,需要释放一个对象时,就将该对象的引用计数减1…

耗損平均技術

耗損平均技術(),又称磨损均衡,是快閃記憶體上的一種抹平技術。快閃記憶體的區塊有抺寫次數的限制,針對同一個單一區塊,進行重複抺除、寫入,將會造成讀取速度變慢,甚至損壞而無法使用。耗損平均技術目的在於平均使用快閃記憶體中的每個儲存區塊,以避免某些“特定”儲存區塊因過度使用而形成壞區塊。 磨损均衡算法通过将写入分配到闪存介质上的多个扇区,控制闪存介质扇区的不均匀“磨损”。磨损均衡算法通常集成在闪存盘控制器的韌體内,如此实现的磨损均衡对操作系…

磁盘缓存

磁盘缓存(、)实际上是将下载到的数据先保存于系统为软件分配的内存空间中(这个内存空间被称之为“内存池”),当保存到内存池中的数据达到一个程度时,便會将数据保存到硬盘中。这样可以减少实际的磁盘操作,有效的保护磁盘免于重复的读写操作而导致的损坏。 磁盘缓存是為了減少CPU透過I/O讀取磁碟機的次數,提昇磁碟I/O的效率,用一塊記憶體來儲存存取較頻繁的磁碟內容;因為記憶體的存取是電子動作,而磁碟的存取是機械動作,感覺上磁碟I/O變得較為快速。…

定址空間

-{定址}-空間(),又稱為-{位址}-空間、-{地址}-空間,是指某個範圍內的離散位址,這些位址可能分別對應到某個網路節點、周邊裝置、磁區或是某個實體或是邏輯裝置等等。 作業系統 在作業系統中,定址空間指的是某個特定进程,在記憶體中所能夠使用與控制的位址區段。現代作業系統如 Linux,基本上採用了分頁和記憶體區段機制,分頁用於虛擬記憶體到實體記憶體的映射,分段機制可用執行檔載入重定位與記憶體區段權限管理。 參見 均匀访存模型 (UM…

VRC VI

VRC VI(Virtual Rom Controller 6) 是科樂美(后科樂美數位娛樂分社)於1989年开发的红白机用ROM集成电路,也兼用做音源集成电路(LSI)。 科樂美後推出了VRC VI的派生版芯片VRC VII (Virtual Rom Controller 7)。 VRC VI 功能 让主程序ROM和素材ROM的成为可能。 声音输出:8比特数字输出(矩形波 2ch + 锯齿波 1ch) - 在检测到光栅图位置后,发生I…

記憶體管理

内存管理,是指软件运行时对计算机主存储器资源的分配和使用的技术。其最主要的目的是如何高效、快速的分配,并且在适当的时候释放和回收内存资源。 一個執行中的程式,譬如網頁瀏覽器在個人電腦或是圖靈機(Turing machine)裡面,為一個进程將資料轉換於真實世界及電腦記憶體之間,然後將資料存於電腦記憶體內部(在電腦科學,一個程式是一群指令的集合,一個进程是電腦在執行中的程式)。記憶體能被實際組織在許多方法裡頭,例如磁帶或是磁盤,或是小陣列…

数据段

在采用段式内存管理的架构中,数据段(data segment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态記憶體分配。 参见 BSS段 代码段 記憶體管理 动态記憶體分配 *段式管理

Rebasing

Rebasing表示的是指建立一个共享库映像的过程,这种方式可以保证在使用虚拟内存的时候不会与系统中其他已装载的共享库冲突。 这个技术广被泛地使用在Win32平台上,以避免加载器对系统DLL进行地址重新定位時的开销。 一些在Linux/x86系统上的安全方面的扩展部分使用Rebasing技术。 为了把地址0x00作为所有编码的指针,用它限制能够使用的代码地址在0x00ffffff以下;这可以消除一些安全方面的内存溢出问题, 这些问题往往…

内存数据库

内存数据库是指一种将全部内容存放在内存中,而非传统数据库那样存放在外部存储器中的数据库。内存数据库指的是所有的数据访问控制都在内存中进行,这是与磁盘数据库相对而言的,磁盘数据库虽然也有一定的缓存机制,但都不能避免从外设到内存的交换,而这种交换过程对性能的损耗是致命的。由于内存的读写速度极快(双通道DDR3-1333可以达到9300 MB/s,一般磁盘约150 MB/s),随机访问时间更是可以纳秒计(一般磁盘约10 ms,双通道DDR3-…

追踪垃圾回收

在计算机编程中,跟踪垃圾收集(英語: Tracing garbage collection )是一种自动内存管理的算法,该算法通过分析某些“根”对象的引用关系,来确定需要保留的可访问对象,并释放其余的不可访问对象的内存空间。该算法在实际的软件工程中得到了广泛的应用。 跟踪垃圾收集是最常见的垃圾收集方式,以至于“垃圾收集”通常是指跟踪垃圾收集,而不是引用计数之类的其他方法。 TOC 对象的可达性 简单地说,如果可以从任何一个已经定义的变量…

壞區管理

在NAND Flash的製造過程中所產生故障區塊,稱為Early Bad Block。在使用的過程中,也會隨著寫入、抹除的操作次數增加,而逐漸產生故障區塊,稱為Latter Bad Block。 故障區塊管理,是由控制IC來達成故障區塊的管理機制,以偵測並標示NAND Flash中的故障區塊,提升資料存取的可靠度。控制IC的故障區塊管理機制,會在首次啟動NAND Flash時,建立故障區塊表(Bad Block Table),也會將使用…

自动变量

在计算机编程领域,自动变量(Automatic Variable)指的是局部作用域变量,具体来说即是在控制流进入变量作用域时系统自动为其分配存储空间,并在离开作用域时释放空间的一类变量。在许多程序语言中,自动变量与术语“局部变量”(Local Variable)所指的变量实际上是同一种变量,所以通常情况下“自动变量”与“局部变量”是同义的。 不同程序语言中的实现 C、C++ 自动变量在C与C++中的实现即为“自动变量”(Automati…

虚引用

虚引用 是Java语言中的一种引用方式,在虚引用中,内存可以被回收。 虚引用是 Java语言中提供的非强引用的一种;其他两种分别是弱引用 和 软引用。 虚引用是Java语言中最弱的一种引用。 在Java 8和早期版本中,finalize后的对象需要对应的软应用被回收后才可以被回收。 Java 9 中允许finalize后的引用对象被立即回收。 用例 虚引用的应用场景,主要是少量的技术上的使用, 主要用来跟踪对象被垃圾回收器回收的活动。首…

不可访问内存

在计算机科学中,不可访问内存是指一组没有任何可访问指针指向的由计算机程序进行动态分配的内存块。类似的,一个不可访问对象是指没有可访问引用型指向的动态分配对象。通俗来说,不可访问内存是程序无法直接访问的动态内存,同时也无法通过指针指向一个可访问的起始对象来进行访问。 动态内存分配的实现是采用了垃圾回收机制,在一个对象不可访问后,它会被回收。垃圾收集器能决定是否一个对象还是可访问的;任何被确定不可访问的对象将会被释放。在许多编程语言中(例如…

分块 (计算机)

在计算机编程中,分块具有多种含义。 在内存管理方面 典型的现代软件系统从称为堆的结构中动态分配内存。调用堆管理例程用来分配和释放内存。堆管理引入了一些计算时间,可能是一个性能问题。分块是指通过使用特殊的情况知识来汇总相关的内存分配请求从而提高性能的策略。例如,如果知道某种对象通常需要8个为一组使用,那么与其单独分配和释放每个对象,对堆管理器进行16次调用,不如分配和释放由8个对象组成的数组,从而将调用次数减少到2次。 在HTTP消息传输…

全局描述符表

全局描述符表 (GDT) 是一个从 Intel x86-系列处理器 80286 开始用于界定不同内存区域的特征的数据结构。 全局描述表位于内存中。全局描述表的条目描述及规定了不同内存分区的各种特征,包括基地址、大小和访问等特权如可执行和可写等。 在 Intel 的术语中,这些内存区域被称为 段 。 全局描述表用于内存地址的转换。所有程序的内存访问都需要用到GDT中的有关内存区域即x86内存分段的信息。访问GDT需要使用segment s…

堆栈段

堆栈段(stack segment)通常是指采用堆栈方式工作的一段内存区域。当程序被执行时,程序可能会将其执行的状态加入栈的顶部;当程序结束时,它必须把栈顶的状态数据弹出(pop)。 在采用段式内存管理方式进行程序内存分配的架构中,堆栈段用来存放局部变量和函数返回地址。堆栈段是在程序运行时动态分配使用,只需要通过栈顶指针即可访问。目前大多数CPU中都有专用寄存器可以被用来存放栈顶地址。 理论上,最小的栈可能是一个仅能保存函数调用(fun…

总线错误

在计算机领域,总线错误(bus error)是一种硬件,为通知操作系统一个进程正尝试访问CPU无法访问的物理地址,即一个无效的位址匯流排地址,它由此得名。在现代的大多数架构中,这比記憶體區段錯誤(段错误)更罕见,而那主要由于内存访问冲突所造成:即逻辑地址或权限的问题。 在POSIX兼容平台上,总线错误通常导致发送SIGBUS信号到导致错误的进程。SIGBUS也可能因计算机检测到的任何常规设备故障引发。总线错误很少代表硬件存在物理损坏,而…