package com.util;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import jdk.nashorn.internal.ir.debug.ObjectSizeCalculator;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.openjdk.jol.info.ClassLayout;
import java.io.*;
import java.lang.reflect.Field;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Test2 {
public static void main(String[] args) throws InterruptedException, Exception {
//对象头8,实际数据为int 4,没有引用,8+4=12 不是8的倍数。填充4字节,一共16字节
int a=1;System.out.println(ObjectSizeCalculator.getObjectSize(a));
//数组对象占用大小为 对象头12字节 字节数组长度为0,则0字节,没有引用, 补齐16字节
Byte[] bytearr=new Byte[0];
System.out.println(ObjectSizeCalculator.getObjectSize(bytearr));
//数组对象占用大小为 对象头12字节 字节数组长度为1,则4字节,没有引用, 补齐24字节
Byte[] bytearr2=new Byte[1];
System.out.println(ObjectSizeCalculator.getObjectSize(bytearr2));
//String里有三个属性,一个int,一个数组,一个long
//对象头8字节,int 4字节 long 8字节,数组是引用4字节 一共 8+4+8+4=24字节
//数组对象占用大小为 对象头12字节 字节数组长度为0,则0字节,没有引用, 补齐16字节
//一共 24+16=40
String b="";System.out.println(ObjectSizeCalculator.getObjectSize(b));
//对象头8字节,
System.out.println(ObjectSizeCalculator.getObjectSize(new Demo()));
}
}
class Demo {private int a = 1;}