这是 a previous question 的一个子集.
作为练习,我正在编写一个内存管理器 - 即实现 malloc、realloc 和 free 的代码(或 new 和 delete。)我的语言的 RTL,Delphi,allows the RTL's memory manager to be replaced easily .对于那些使用 C++ 的人来说,这与重写 new 和 delete 类似,但级别较低(它 Hook 到 RTL 本身而不是一种语言功能。)
我正在寻找有关其他人对同一问题采用的高质量方法的资源,并试图找出其他主要编译器供应商使用的算法。虽然 Delphi 有很好的文档记录,但我找不到有关 MS VC++、.Net 或 Objective C 使用的实现的任何信息。这些供应商似乎(?)不允许像 Delphi 那样连接他们的 RTL。所有文档似乎都是更高级别的,例如选择一个随机示例的 NSAutoReleasePool
- 对于这个问题来说太高级了。
主要供应商(Microsoft VC++ 和 .Net,以及 Apple Objective C)在其运行时库中使用哪些内存管理算法?
- Embarcadero Delphi and C++ Builder is well documented .
- Linux seems to use Buddy ,虽然我怀疑这个信息是出于 日期。
- MS VC++:未知。
- .Net:未知。
- Objective-C :未知。
很好 答案的一个例子是描述内存管理器实现的文档,例如 this one ,或已发表论文的链接。 有用答案的一个例子是算法,“VC++运行时使用the Hoard allocator '.
最佳答案
Objective-C 使用自动引用计数 (ARC)。它从 iOS5 开始启用。 Apple 拥有美国专利 20030196063“透明的本地和分布式内存管理系统”。
Java 使用经过多年发展的复杂垃圾收集方案。请参阅“使用 5.0 Java[tm] 虚拟机调整垃圾收集”http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html
关于objective-c - 主要编译器供应商使用哪些内存管理算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16297170/