主要编译器供应商使用哪些内存管理算法?

时间:2013-04-30 10:01:27

标签: objective-c algorithm delphi memory-management msvcrt

这是a previous question的一个子集。

作为练习,我正在编写一个内存管理器 - 也就是说,实现malloc,realloc和free (或new和delete)的代码。我的语言的RTL,Delphi,{{3 }}。对于那些使用C ++的人来说,这与覆盖new和delete类似,但是更低级别(它挂钩到RTL本身而不是语言功能。)

我正在寻找其他人针对同一问题采取高质量方法的资源,并试图找出其他主要编译器供应商使用的算法。虽然Delphi有很好的文档记录,但我找不到有关MS VC ++,。Net或Objective C所使用的实现的任何信息。这些供应商似乎(?)不允许他们的RTL像Delphi那样被挂钩。所有文档似乎都是更高级别的,例如NSAutoReleasePool选择一个随机的例子 - 对于这个问题来说太高了。

主要供应商(Microsoft VC ++和.Net以及Apple Objective C)在运行时库中使用哪些内存管理算法?

伟大答案的一个示例是描述内存管理器实现的文档,例如Linux seems to use Buddy或发布论文的链接。 有用的答案的一个示例是算法,'VC ++运行时使用this one'。

1 个答案:

答案 0 :(得分:1)

Objective-C使用自动引用计数(ARC)。它从iOS5开始启用。 Apple拥有美国专利20030196063“透明本地和分布式内存管理系统”。

Java使用复杂的垃圾收集方案,这种方案多年来不断发展。请参阅“使用5.0 Java [tm]虚拟机调整垃圾收集”http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html