Android 中的 Enum 到底占多少内存?该如何用? | Yet Another Summer Rain
文档所说的两倍
所以实际占用的内存,并非 文档 所说的两倍左右。
假设有 n 个枚举值,仅仅考虑枚举类,静态占用的内存,n 个引用 + n 个数组 + 24 空数组长度: 8n + 24。
而对于 n 个值的常量,则有 4n 字节。当 n 很大时,这样的关系是两倍,但是枚举引用所指向的内存(retained heap)没有考虑进来。
该用不该用?
文档 提到:
You should strictly avoid using enums on Android.
枚举有其其他的特性,如果你需要这些特性,比如:非连续数值的判断,重载等时,可以用。
另外,内存用量也并非那么地可怕,枚举带来的编码的便捷,代码可读性的提升也是很大的利好。
看到这里,你应该了解了所有的细节了,是否该用,各位自己权衡。
更多的讨论,可以看这里: 该不该用枚举。
如果更好地使用常量
如果应用确实对内存用量敏感,或者你就是追求极致,可用常量来代替枚举。
常量一般会和 Bit Mask 结合起来用,这样可以极致地减少了内存使用,同时使代码有较好的可读性。
Read full article from Android 中的 Enum 到底占多少内存?该如何用? | Yet Another Summer Rain
No comments:
Post a Comment