Java教程

内存对齐详解

本文主要是介绍内存对齐详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

内存对齐

本机宽度---也就是进行磁盘划分时的切割单个内存单元的大小,也就是对齐宽度

寻址花费的时间==》降低寻址次数,数据单元大>也就是内存和效率的互换

内存分配时,一个数据总是会尽量不被切开到多个地址单元中

image如图所示,紫色部分为浪费了的空间

1.为什么不可以c直接接在后面进行存储呢?

这涉及到内存寻址,当数据被切开后,那么就要求寻址两次,才能获取完整的数据,由于寻址是要耗费CPU的,为了寻找一部分的数据,要多寻找一次,操作系统设计者觉得效率低下,相对于内存来说,cpu是很昂贵的,而且降低了整体效率,所以他们决定以空间换效率,也就是说,像第一种方式,它最后数据c只会进行一次寻址,从而提高了效率。

2.那么有人会说,既然这些数据存放不了,为什么不可以把其他数据再填充进来呢?

我想,如果还要把那些小碎片还得利用的话,那么是不是还需要一个表用以记录维护那些小碎片,这无疑降低了效率。为了效率,设计者们还是决定浪费部分空间,来提高整体的效率

由此,我们可以知道,今后在程序设计时,可以将数据从小到大进行定义,从而优化内存结构

这篇关于内存对齐详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!