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

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

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

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

    相关文章

      网友评论

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

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