我正在学习D语言,我喜欢它的许多特性,但我对其垃圾回收机制有些怀疑。我想先给它一个机会,但首先我想知道:
我知道在某些情况下,GC可以提高性能,但是对于这个例子呢: 想象一下一个游戏引擎,在游戏开始时分配大量的内存(几百兆字节的复杂结构),但在游戏运行时,它几乎不进行任何分配/释放操作。但仍然会发生一些小的操作(例如GUI中的字符串操作)—那些小操作最终会触发GC扫描所有已分配的内存吗?据我所了解,即使我决定自己管理大部分数据的内存,如果我希望GC能够保存对托管内存(如字符串)的任何引用,我仍需要向GC注册范围。
当然,我可以先编程再进行剖析,但我希望能够提前对性能做出至少一些估计,这比以后寻找解决方法要好。(像自由列表这样的解决方案在我看来是丑陋的解决方法,并且无法在任何地方使用。)
- 如何估计它将运行多久?
- 它的运行时间有多长?与分配的内存量、管理对象的数量等成比例吗?
我知道在某些情况下,GC可以提高性能,但是对于这个例子呢: 想象一下一个游戏引擎,在游戏开始时分配大量的内存(几百兆字节的复杂结构),但在游戏运行时,它几乎不进行任何分配/释放操作。但仍然会发生一些小的操作(例如GUI中的字符串操作)—那些小操作最终会触发GC扫描所有已分配的内存吗?据我所了解,即使我决定自己管理大部分数据的内存,如果我希望GC能够保存对托管内存(如字符串)的任何引用,我仍需要向GC注册范围。
当然,我可以先编程再进行剖析,但我希望能够提前对性能做出至少一些估计,这比以后寻找解决方法要好。(像自由列表这样的解决方案在我看来是丑陋的解决方法,并且无法在任何地方使用。)