一个java对象到底占用多大内存?-亚博电竞手机版
java学习
2020年03月25日 23:38
11
最近在读《深入理解java虚拟机》,对java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个java对象到底占用多大内存?
在网上搜到了一篇博客讲的非常好:http://yueyemaitian.iteye.com/blog/2033046,里面提供的这个类也非常实用:
import java.lang.instrument.instrumentation; import java.lang.reflect.array; import java.lang.reflect.field; import java.lang.reflect.modifier; import java.util.arraydeque; import java.util.deque; import java.util.hashset; import java.util.set; /** * 对象占用字节大小工具类 * * @author tianmai.fh * @date 2014-03-18 11:29 */ public class sizeofobject { static instrumentation inst; public static void premain(string args, instrumentation instp) { inst = instp; } /** * 直接计算当前对象占用空间大小,包括当前类及超类的基本类型实例字段大小、
* 引用类型实例字段引用大小、实例基本类型数组总占用空间、实例引用类型数组引用本身占用空间大小;
* 但是不包括超类继承下来的和当前类声明的实例引用字段的对象本身的大小、实例引用数组引用的对象本身的大小
* * @param obj * @return */ public static long sizeof(object obj) { return inst.getobjectsize(obj); } /** * 递归计算当前对象占用空间总大小,包括当前类和超类的实例字段大小以及实例字段引用对象大小 * * @param objp * @return * @throws illegalaccessexception */ public static long fullsizeof(object objp) throws illegalaccessexception { set