在Java中,沒有像C語言中那樣有sizeof運算符,但Java中有兩種方法可以計算對象和數組的大小:
使用Java中的反射機制,通過查看對象或類的字節碼來計算大小。
import java.lang.reflect.Field; public class SizeOfDemo { public static void main(String[] args) throws Exception { SizeOfDemo obj = new SizeOfDemo(); long size = sizeOf(obj); System.out.println("Size of object: " + size + " bytes"); } public static long sizeOf(Object obj) throws Exception { Class cls = obj.getClass(); long size = 0; while (cls != null) { Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { size += sizeOf(field.getType()); } cls = cls.getSuperclass(); } return size; } private static long sizeOf(Class>cls) { if (cls == byte.class || cls == Boolean.class) { return 1; } else if (cls == short.class || cls == char.class) { return 2; } else if (cls == int.class || cls == float.class) { return 4; } else if (cls == long.class || cls == double.class) { return 8; } else { return sizeOf(Object.class); } } }
使用Java代理和Instrumentation API來實現大小計算。
import java.lang.instrument.Instrumentation; public class Agent { private static Instrumentation instrumentation; public static void premain(String agentArgs, Instrumentation inst) { instrumentation = inst; } public static long getObjectSize(Object obj) { return instrumentation.getObjectSize(obj); } }
通過以上兩種方法,我們可以在Java中計算對象和數組的大小。
上一篇ajax前臺怎么獲得數據
下一篇css多級菜單怎么命名