JVM调优--计算对象占用的空间

来源:互联网 发布:淘宝不同意退款怎么办 编辑:程序博客网 时间:2024/05/25 13:34

需要了解的知识

jvm参数 -javaagent

看注释

/** * <pre> * 普通对象的结构如下,按64位机器的长度计算1. 对象头(_mark), 8个字节2. Oop指针,如果是32G内存以下的,默认开启对象指针压缩,4个字节3. 数据区4.Padding(内存对齐),按照8的倍数对齐----所以在32G内存设备下,一个空对象默认占用8+4个字节 由于内存对其补齐8个字节,所以一共占用16个字节 * </pre> *  * @author coffee<br/> *         2017年12月22日下午1:32:11 */public class EmptyObject {}
/** * <pre> * 32G内存设备下测试<br> * 0个字段 12byte 由于内存对其 占16byte * 1个byte字段 13 由于内存对其 占16byte * 2个byte字段 14 由于内存对其 占16byte * 3个byte字段 15 由于内存对其 占16byte * 4个byte字段 16 由于内存对其 占16byte * ----- * 5个byte字段 17 由于内存对其 占24byte * </pre> *  * @author coffee<br/> *         2017年12月22日下午1:59:51 */public class SimpleObject {byte b1 = 1;// 1字节byte b2 = 1;// 1字节byte b3 = 1;// 1字节byte b4 = 1;// 1字节// byte b5 = 1;// 1字节}
public class ComplexObject {// 12String str; // 4int i1; // 4byte b1; // 1byte b2; // 1int i2; // 4Object obj; // 对象引用占用 4byte b3; // 1byte b4; // 1byte b5; // 1//short s;//2}



原创粉丝点击