一、前言
通过Java代码实现对象、List类集、数组、Map及常用数据类型等占用字节大小的代码示例,详情参见代码示例部分。
二、代码示例
package com.xwood.demo.util;@b@@b@import java.io.ByteArrayOutputStream;@b@import java.io.ObjectOutputStream;@b@import java.util.LinkedList;@b@import java.util.List;@b@@b@public class ByteSizeUtil {@b@ @b@ public static int getByteSize(List<?> datas) {@b@ int byteSize=0;@b@ try {@b@ ByteArrayOutputStream baos = new ByteArrayOutputStream(); @b@ ObjectOutputStream os = new ObjectOutputStream(baos); @b@ os.writeObject(datas); @b@ os.close(); @b@ byteSize=baos.size();@b@ System.out.println("ByteSizeUtil_getByteSize_datas>>>>>>>>>>>>【"+byteSize+"】字节");@b@ baos.close();@b@ } catch (Exception e) {@b@ e.printStackTrace();@b@ } @b@ return byteSize;@b@ }@b@ @b@ public static int getByteSize(Object data){@b@ int byteSize=0;@b@ try {@b@ ByteArrayOutputStream baos = new ByteArrayOutputStream(); @b@ ObjectOutputStream os = new ObjectOutputStream(baos); @b@ os.writeObject(data); @b@ os.close(); @b@ byteSize=baos.size();@b@ System.out.println("ByteSizeUtil_getByteSize_datas>>>>>>>>>>>>【"+byteSize+"】字节");@b@ baos.close();@b@ } catch (Exception e) {@b@ e.printStackTrace();@b@ } @b@ return byteSize;@b@ }@b@@b@ public static void main(String[] args) throws Exception{@b@ int n = 2000; @b@ List<Integer> list = new LinkedList<Integer>(); @b@ for (int i = 0; i < n; i++) { @b@ list.add(i); @b@ } @b@ getByteSize(list);@b@ }@b@@b@}
控制台打印结果
ByteSizeUtil_getByteSize_datas>>>>>>>>>>>>【20115】字节