golang中的内存对齐

简介:

通过unsafe.Alignof查看内存对齐情况,在X64中8位对齐,在x86中4位对齐
int在X64中相当于int64,在x86中相当于int32,所以对应的长度分别是8和4
string在X64中长度16,在X86中长度为8
[]数组长度在X64为24,X86为12

下面两个结构体的长度计算

type s1 struct {

a byte   //1
b int    //8
c int8   //1
d []byte //24
e int    //8
f byte   //1
g string //16

}
在X64长度为80,在X86长度为40,将结构体更改顺序后生成s2如下

type s2 struct {

a byte   //1
b byte   //1
c int8   //1
d int    //4
e int    //4
f string //8
g []byte //12

}
s2在X64长度为64,在X86长度为32

根据上面的结果发现,不同的位置顺序对应的内存大小占用是有可能相差很大的

目录
相关文章
|
1月前
|
存储 缓存 安全
Go语言内存模型深度解析
【2月更文挑战第16天】Go语言以其简洁的语法、强大的并发编程能力和高效的内存管理而备受开发者青睐。本文将对Go语言的内存模型进行深度解析,探讨其内存布局、内存分配与回收机制以及内存安全等方面的内容,帮助读者更好地理解和应用Go语言的内存管理特性。
|
3月前
|
存储 编译器 Go
Golang底层原理剖析之内存对齐
Golang底层原理剖析之内存对齐
26 0
|
6月前
|
存储 编译器 Go
Go 语言内存逃逸案例
Go 语言内存逃逸案例
31 0
|
6月前
|
存储 算法 编译器
Golang 语言的内存管理
Golang 语言的内存管理
20 0
|
6月前
|
安全 编译器 Go
Golang 语言的内存模型
Golang 语言的内存模型
27 0
|
6月前
|
存储 缓存 Go
Go语言开发者必读:内存缓存技巧
Go语言开发者必读:内存缓存技巧
59 0
|
5月前
|
存储 缓存 Java
golang 内存管理
golang 内存管理
|
1月前
|
监控 Java 编译器
Go语言内存与并发性能综合优化策略
【2月更文挑战第11天】Go语言以其高效的并发处理能力和简洁的内存管理机制成为了现代软件开发中的热门选择。然而,在实际应用中,如何综合优化Go程序的内存使用和并发性能,仍然是一个值得探讨的话题。本文将深入探讨Go语言内存与并发性能的综合优化策略,包括内存布局优化、并发模式设计、资源池化以及性能监控与分析等方面,旨在帮助开发者全面提升Go程序的整体性能。
|
1月前
|
Java 编译器 Go
Go语言内存管理优化实践
【2月更文挑战第11天】随着Go语言在各个领域的应用日益广泛,对其性能的要求也越来越高。内存管理作为影响程序性能的关键因素之一,对Go语言的优化显得尤为重要。本文将深入探讨Go语言的内存管理机制,并提供一系列实用的内存优化策略,帮助开发者更加高效地利用内存资源,提升Go程序的整体性能。
|
2月前
|
存储 缓存 算法
Golang高性能内存缓存库BigCache设计与分析
【2月更文挑战第4天】分析Golang高性能内存缓存库BigCache设计
64 0