支付宝一面:一个 Java 对象到底有多大?被问傻眼了!!
来源:http://blog.lichengwu.cn/
一个Java对象到底有多大?
Java对象结构
Object Header Class Pointer Fields
hash(25)+age(4)+lock(3)=32bit
unused(25+1)+hash(31)+age(4)+lock(3)=64bit
2024最新架构课程,对标培训机构
/**
* The value of the <code>Integer</code>.
*
* @serial
*/
private final int value;
4(object header)+4(pointer)+4(length)+4*10(10个int大小)=52byte 由于需要8位对齐,所以最终大小为`56byte`。
节约内存原则
1)尽量使用基本类型,而不是包装类型。
2)斟酌字段类型,在满足容量前提下,尽量用小字段。
/**
* The array buffer into which the elements of the ArrayList are stored.
* The capacity of the ArrayList is the length of this array buffer.
*/
private transient Object[] elementData;
/**
* The size of the ArrayList (the number of elements it contains).
*
* @serial
*/
private int size;
3)如果可能,尽量用数组,少用集合。
数组中是可以使用基本类型的,但是集合中只能放包装类型!
4)小技巧
时间用long/int表示,不用Date或者String。 短字符串如果能穷举或者转换成ascii表示,可以用long或者int表示。
总结
PS:如果觉得我的分享不错,欢迎大家随手点赞、在看。
(完) 加我"微信" 获取一份 最新Java面试题资料 请备注:666,不然不通过~
最近好文
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。 获取方式:关注公众号并回复 java 领取,更多内容陆续奉上。 明天见(。・ω・。)
微信扫码关注该文公众号作者
戳这里提交新闻线索和高质量文章给我们。
来源: qq
点击查看作者最近其他文章