1.内部碎片:
当一个进程装入到固定大小的分区块(比如页)时,假如进程所需空间小于分区块,则分区块的剩余的空间将无法被系统使用,称为内部碎片。
2.外部碎片:
指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
3.存储管理中都可能产生的碎片:
除了内部碎片和外部碎片,在“分页存储”中,可能产生“页内碎片”,页内碎片是由于进程的最后一页经常装不满一块而形成了不可利用的碎片。
扩展资料
在数据存储领域中,碎片(fragmentation)是指存储空间使用效率低下,结果导致功能、运行效率变低或二者兼而有之的现象。碎片化所造成的影响取决于具体的存储系统以及碎片化的种类。
大部分情况下,碎片化都会导致都会导致存储空间的浪费,此时“碎片”一词亦可指代闲置的空间本身。对于其他的一些系统来说(比如FAT文件系统),数据量一定的前提下,用于存储数据所占的存储空间是一定的,和碎片化的程度无关。
参考资料来源:百度百科-外部碎片
在内存中供用户使用的内存区有三个:程序存储区、
静态存储区、
动态存储区。
程序的数据一般存放在静态存储区和动态存储区。
静态存储区是当程序开始的时候就分配好的一块固定的内存区。
动态存储区一般是在程序运行过程中根据需要动态去分配和释放的内存区域。这块内存区域需要开发人员在使用完毕之后进行释放,如果没有释放动态分配的内存区域就会造成内存泄漏。相应的这块区域也不能够被使用。
举个例子:有一个可以装50ml水的空杯子,但是你非得向这个被子里面倒了100ml水,那么这个时候多余的水肯定会流出来,这就是水溢出了。那么放到内存来讲,就是内存溢出。
内存碎片分为外部碎片和内部碎片
外部碎片指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。
外部碎片是出于任何已分配区域或页面外部的空闲存储块。这些存储块的总和可以满足当前申请的长度要求,但是由于它们的地址不连续或其他原因,使得系统无法满足当前申请。
内部碎片就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的
空间;
内部碎片是处于内部或页面内部的存储块。占有这些区域或页面的进程并不使用这个存储块。而在进程占有这块存储块时,系统无法利用它。直到进程释放它,或进程结束时,系统才有可能利用这个存储块。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)