不是制作内存池系统,我不能只在应用程序启动时为每个对象分配大量数组而只是使用它们,在极端情况下,某些对象确实需要比它的数组更多的实例,数组将只是增加了一倍或四倍,所以它永远不会达到最大尺寸。我需要的速度比记忆更多,所以我认为这是一个公平的交易?
答案 0 :(得分:5)
您所描述的内容与内存池之间的唯一区别是,通常,池分配器会在内存不足时分配新池,如果它耗尽,您将重新分配整个阵列。这将导致最坏情况的运行时间大大增加,并且您需要一个方案来避免在重新分配时使指针和引用无效,这可能会降低整个程序的性能。
池分配器中最糟糕的情况是当它耗尽空间并且必须分配新阵列时。在分配器中最糟糕的情况是,它耗尽并且必须分配一个新的更大的数组并将所有旧对象复制到新数组。显然,后者需要更多的时间。