java - 使用小数据类型是否会减少内存使用(来自内存分配而不是效率)?

标签 java c++ c memory-management

其实我的问题和这个one很相似,但这篇文章仅关注 C#。最近我读到一篇文章说,即使某些位没有被使用,java也会将一些短类型(例如short)在内存中“提升”到4字节,因此它无法减少使用量。 (这是真的吗?)

所以我的问题是语言,尤其是C、C++和java(正如Manish在post谈论java中所说的那样),如何处理小数据类型的内存分配 。首选引用或任何方法来找出它。谢谢

最佳答案

C/C++ 仅使用指定的内存量,但将数据(默认情况下)对齐到某个值的倍数的地址,通常对于 32 位应用程序为 4 字节,对于 64 位应用程序为 8 字节。

例如,如果数据在 4 或 8 字节边界上对齐,则“char”仅使用一个字节。 5 个字符的数组将使用 5 个字节。但是在 5 字节字符数组之后分配的数据项被放置在跳过 3 个字节的地址以保持其正确对齐。

这是为了大多数处理器上的性能。通常有诸如“pack”和“align”之类的编译指示可用于更改对齐方式或禁用对齐方式。

关于java - 使用小数据类型是否会减少内存使用(来自内存分配而不是效率)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24451609/

相关文章:

java - Option[Long] 构造函数抛出 NullPointerException

C++ 输出错误

c++ - 使用 ZeroMemory 初始化数组

java - Weblogic 12.2 上的 Swagger Bootstrap

java - 使用 Gradle 在 Java 之前/与 Java 一起编译 Scala

c++ - 如果使用较小的数字,switch case 会更快吗?

计算平均海平面变化

c - PThread 地址空间

c - OpenGL 绕其局部轴旋转对象

java - 线程中的异常 "main"java.sql.SQLException : invalid name pattern: pakagename. sqlTypename