一、順序存儲有比較多外部碎片的原因
順序存儲是一種數(shù)據(jù)存儲方式,它是將數(shù)據(jù)依次存儲在一片連續(xù)的內(nèi)存空間中,每個(gè)數(shù)據(jù)元素占用固定的空間大小。相比于鏈?zhǔn)酱鎯Γ樞虼鎯哂写鎯驮L問效率高的優(yōu)點(diǎn),但是也存在一些問題,其中之一就是外部碎片比較多。
外部碎片指的是分散在內(nèi)存中的小塊未被利用的空間,這些空間無法被分配給需要存儲的數(shù)據(jù),從而造成內(nèi)存空間的浪費(fèi)。在順序存儲中,當(dāng)需要存儲的數(shù)據(jù)元素大小不同時(shí),容易出現(xiàn)外部碎片問題。以下是造成順序存儲有比較多外部碎片的原因:
1、數(shù)據(jù)元素大小不一
在順序存儲中,數(shù)據(jù)元素的大小必須是固定的,如果不同的數(shù)據(jù)元素大小不同,就會產(chǎn)生浪費(fèi)空間的現(xiàn)象。比如,如果需要存儲兩個(gè)數(shù)據(jù)元素,一個(gè)占用1個(gè)字節(jié),一個(gè)占用10個(gè)字節(jié),那么存儲這兩個(gè)元素時(shí)就會產(chǎn)生外部碎片。
2、內(nèi)存分配和釋放不合理
在順序存儲中,當(dāng)一個(gè)數(shù)據(jù)元素被刪除時(shí),它所占據(jù)的空間就變成了未分配的內(nèi)存空間,這些空間可能太小,不能被下一個(gè)需要存儲的數(shù)據(jù)元素使用,從而產(chǎn)生外部碎片。如果內(nèi)存分配和釋放不合理,就會導(dǎo)致順序存儲中外部碎片的增加。
3、數(shù)據(jù)元素的插入和刪除
在順序存儲中,如果需要插入或刪除一個(gè)數(shù)據(jù)元素,就需要移動(dòng)其他數(shù)據(jù)元素的位置,從而留出空間。這個(gè)操作會使得已有的數(shù)據(jù)元素重新排列,容易產(chǎn)生外部碎片。而且,如果插入或刪除的數(shù)據(jù)元素比較多,就會導(dǎo)致大量的數(shù)據(jù)元素的移動(dòng),從而降低了存儲和訪問的效率。