支付宝一面:一个 Java 对象到底有多大?被问傻眼了!!
推荐阅读
1、【地址已更新】8月26日最新免费ChatGPT,附视频号下载方法 2、【私活必备】35款 SpringBoot/SpringCloud 开源项目,用来接私活挣钱真爽! 3、程序员段子:有哪些话一听就知道对方很水!
1
2
-
Object Header -
Class Pointer -
Fields
hash(25)+age(4)+lock(3)=32bit
64位中:
unused(25+1)+hash(31)+age(4)+lock(3)=64bit
/**
* 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`。
3
/**
* 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;
数组中是可以使用基本类型的,但是集合中只能放包装类型!
-
时间用long/int表示,不用Date或者String。 -
短字符串如果能穷举或者转换成ascii表示,可以用long或者int表示。
4
性能和可读性向来就有些矛盾,在这里也是,为了节约内存,不得不进行取舍,代码丑陋了一些,可读性差了一些,还好能省下一些内存。上面的原则在确实需要节约内存的时候,不妨可以试试!
来源:zhuanlan.zhihu.com/p/67609763
资源,怎么领取?
扫二维码,加我微信,备注:编程合集
一定要备注:编程合集,不要急哦,工作忙完后就会通过!
!链接发夸克网盘!
评论