如路由器的可用内存为20M,而最大可用块的大小为15M的话,则表示路由器内存中是有一定的碎块,但是这点碎块不影响路由器的正常运行。如果可用内存为20M,而最大可用块为0.8M的话,则说明路由器内存中存在比较多的碎块。连续连续内存中没有足够大的可用快,这有可能导致严重的内存分配问题,如导致一个或者多个接口间歇性的丢失报文。在路由器内存中,允许存在一定的内存碎片。到现在为止,还没有哪一种内存管理技术说可以完全避免产生内存碎片。只是这个碎片要保证一个合理的值。具体这个值是多少,也没有人可以给出一个具体的标准。不过根据笔者的经验,最好能够保证可用块的大小在可用内存的二分之一到三分之一之间。当然可用块大小跟可用内存越接近越好。
其实这个可用块与可用内存之间的关系我们可以利用柜子中的抽屉来表示。如一个柜子可用容量虽然比较大,但是里面划分了大小不等的1000多个格子。每个格子的空间容量有限。当有大的数据需要存储时,整的容量是够的,但是小格子的容量不够。此时,就会发生报文丢失的问题。此时看起来内存足够用,可是此时内存中已经没有连续的空间用来存储数据。所以这些看起来比较大的可用内存,其实保存不了多少数据。
遇到这种情况该如何解决呢?一个最简单的方法就是重新启动路由器。路由器重新启动时,路由器IOS系统会重新分配内存和缓存空间。重新启动后,网络管理员再查看一下内存分配的过程。通常情况下,过多的碎片是由于路由器长时间超负荷运行所造成的。只需要重新启动一下,就可以解决内存碎片的问题。