首页 > 系统相关 >内存对齐

内存对齐

时间:2023-03-03 14:25:12浏览次数:30  
标签:字节 默认 访问 内存 对齐 存取

内存对齐的原因
(1) 性能原因:数据结构(尤其是栈)应该尽可能地在自然边界上对齐。原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问

(2) 平台原因:不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。

(3) 空间原因:没有进行内存对齐的结构体或类会浪费一定的空间,当创建对象越多时,消耗的空间越多

主体思想:

内存对齐的前提是有固定划分的格子,比如一个容量为4的格子,能填则填,填不满就用新盒子。

 

尽管内存是以字节为单位,但是大部分处理器并不是按字节块来存取内存的.它一般会以双字节,四字节,8字节,16字节甚至32字节为单位来存取内存,我们将上述这些存取单位称为内存存取粒度.

每个特定平台上的编译器都有自己的默认“对齐系数”(也叫对齐模数)。gcc中默认#pragma pack(4),可以通过预编译命令#pragma pack(n),n = 1,2,4,8,16来改变这一系数。

对齐规则:
1.基本类型的对齐值就是其sizeof值;
2.结构体的对齐值是其成员的最大对齐值;
3.编译器可以设置一个最大对齐值,怎么类型的实际对齐值是该类型的对齐值与默认对齐值取最小值得来。

 

标签:字节,默认,访问,内存,对齐,存取
From: https://www.cnblogs.com/namudelong/p/17175463.html

相关文章

  • 【Redis的三种数据删除策略】定时定期惰性,超出内存就自动清理
    https://blog.csdn.net/DQWERww/article/details/126453008https://blog.csdn.net/qq_38056518/article/details/122107638  内存淘汰机制Redis有过期策略......
  • CPU/内存分析
    一、概念理解程序运作原理:一个请求发送到服务器,首先经过网卡,然后通知cpu有待处理任务,CPU去运行操作系统指令,根据请求的端口号,找到对应的应用程序代码,安排线程去处理;由于程......
  • OpenCloudOS 如何以最小成本,高效定位内存泄露路径?
    导读|遭受内存泄露往往是令开发者头疼的问题,传统分析工具gdb、Valgrind在解决内存泄露问题上效率较低。本文特别邀请到了OpenCloudOS社区Contributor、腾讯后台开发工程......
  • SQLSERVER 内存管理
    查看每个数据库对内存的占用SELECTISNULL(DB_NAME(DATABASE_ID),\'RESOURCEDB\')ASDATABASENAME,CAST(COUNT(ROW_COUNT)*8.0/(1024.0)ASDECIMAL(28,2)......
  • python 字符串 格式化输出 槽格式 左中右对齐的内容
    """槽的格式限定冒号:左边填序号或名称,右边填写格式"""#右对齐的字符串,宽度为20s1="{:>20}".format("hello")print(s1)#右对齐,宽20,!填充s2="{:!>20}".format("python")p......
  • docker下netcore内存dump
    一般开发阶段可以通过visualstudio来检查程序的内存、cup等的优化问题。vs下调试=》性能探查器,这里面大有千秋。但是好多内存问题是经过时间积累下来才暴露出来的,在生产......
  • Linux下如何排查CPU及内存占用过多
    CPU使用top命令,然后按shift+p按照CPU排序,找到占用CPU过高的进程pid。使用top-H-ppid命令,找到进程中消耗资源最高的线程ppid。使用echo‘obase=16;ppid’|bc或者p......
  • Unit Test下使用H2内存数据库
    1.Maven引入包<dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</version></dependency>2.在项目的sr......
  • “堆内存持续占用高 且 ygc回收效果不佳” 排查处理实践
    作者:京东零售王江波说明:部分素材来源于网络,数据分析全为真实数据。一、问题背景自建的两套工具,运行一段时间后均出现内存占用高触发报警,频繁younggc且效果不佳。曾经尝......
  • 命令查看Linux服务器内存、CPU、显卡、硬盘使用情况
    命令查看Linux服务器内存、CPU、显卡、硬盘使用情况查看内存使用情况使用命令:free-m大致结果类似下图:内存占用情况参数解释:Mem行(单位均为M):total:内存总数used:已......