美文网首页
编译原理——内存管理和垃圾回收

编译原理——内存管理和垃圾回收

作者: 牛程程 | 来源:发表于2017-10-11 22:38 被阅读0次

•利用局部性。通过合理利用内存层次结构,内存管理器可以影响程序的运行时间。访问不同部分内存所花费的时间可以小到纳秒大到毫秒。幸运的是,大多数程序花费大部分执行代码时间的相对较小的一部分来访问内存,并且仅接触一小部分数据。如果很可能再次访问相同的内存地址,程序具有时间局部性;如果很可能访问附近的内存地址,它具有空间局部性。
4减少碎片。当程序分配和释放内存时,堆可能会碎片化,或者分解成大量小的不连续的空闲空间。最佳拟合策略 - 分配满足请求的最小可用空间 - 已发现这个策略在实验上可以正常工作。虽然最适合倾向于提高空间利用率,但可能不是最适合空间局部性。通过组合或聚结相邻的空间可以减少碎片。
4手动分配。手动内存管理有两个常见的缺陷:不删除无法引用的数据是内存泄漏问题,引用已删除的数据是一个悬指针错误。
•可访问性。垃圾数据是无法引用或访问的数据。找到不可访问的对象有两种基本方法:捕获转换,因为可访问的对象变得不可访问,或定期找到所有可达对象,并推断所有剩余的对象是不可访问的。
•计数收集器保留对象的引用计数;当计数变为零时,对象变得不可访问。这种收集者增加了维护引用的开销,并且可能无法找到“环”垃圾,该垃圾由可能通过引用链导致彼此引用的不可访问对象组成。
•基于跟踪的垃圾收集器迭代地检查或跟踪所有引用以查找可访问对象,从包含可直接访问不必取消引用任何指针的对象组成的根集开始。

相关文章

  • 编译原理——内存管理和垃圾回收

    •利用局部性。通过合理利用内存层次结构,内存管理器可以影响程序的运行时间。访问不同部分内存所花费的时间可以小到纳秒...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • 2019-01-14 day16 !!!python内存管理

    内存管理 1.数据的存储 2.内存释放(垃圾回收机制)原理:

  • android--垃圾回收与内存优化

    什么是垃圾回收 对比C/C++这种需要自己管理内存的语言 java可以实现自动内存管理和回收 垃圾回收器负责回收程...

  • 可能碰到的iOS笔试面试题(6)--内存管理

    内存管理 ARC处理原理 ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做...

  • 如何避免内存溢出和频繁的垃圾回收

    如何避免内存溢出和频繁的垃圾回收 内存管理机制的实现原理,就不细谈了,内存的回收过程很复杂,简单的说就是两个步骤:...

  • 内存管理

    内存管理ARC处理原理ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只...

  • 4.内存管理

    内存管理ARC处理原理ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只...

  • Java GC

    概述 GC => 垃圾回收 = 回收可用空间 + 压缩内存 内存管理 手动内存管理 => C | C++ 自动内存...

  • 高级PHP面试题

    # PHP 篇 ## GC PHP 5 的内存回收原理?请详细描述ZendMM的工作原理 PHP 7 的垃圾回收和...

网友评论

      本文标题:编译原理——内存管理和垃圾回收

      本文链接:https://www.haomeiwen.com/subject/rfvgyxtx.html