尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

java对象所占内存大小输出

java对象所占内存大小输出 如何计算java对象所占内存大小可以使用下述三种方法。使用jdk8自带API使用下面语句打印对象所占内存大小需要保证jdk版本是jdk8。System.out.println(ObjectSizeCalculator.getObjectSize(3L));借助org.apache.lucene工具类引入maven坐标dependency groupIdorg.apache.lucene/groupId artifactIdlucene-core/artifactId version4.0.0/version /dependency dependency groupIdorg.apache.commons/groupId artifactIdcommons-lang3/artifactId version3.12.0/version /dependency// 使用jdk8自带API System.out.println(List内存占用大小 ObjectSizeCalculator.getObjectSize(map)字节); System.out.println(List占用的内存大小为 new BigDecimal(ObjectSizeCalculator.getObjectSize(map)).divide(new BigDecimal(1024*1024)) MB);借助jol工具类引入maven坐标dependency groupIdorg.openjdk.jol/groupId artifactIdjol-core/artifactId version0.9/version /dependencySystem.out.println(ClassLayout.parseInstance(map).toPrintable());不过这种当对象中内嵌其他对象时只能计算ClassLayout方法中这个object对象所占内存的大小。完整代码如下import lombok.Data; import java.io.Serializable; /** * author Evan Walker * version 1.0 * desc * date 2024/02/20 09:38:43 */ Data public class ClassEntity implements Serializable { private String acctId; private String classTag1; private String classTag2; private String classTag3; }import jdk.nashorn.internal.ir.debug.ObjectSizeCalculator; import org.apache.lucene.util.RamUsageEstimator; import org.openjdk.jol.info.ClassLayout; import java.math.BigDecimal; import java.util.HashMap; import java.util.Map; /** * author Evan Walker * version 1.0 * desc * date 2024/02/20 09:37:48 */ public class Test { public static void main(String[] args) throws Exception{ MapString,ClassEntity map new HashMap(); for(int i 0;i1000000;i){ ClassEntity entity new ClassEntity(); entity.setClassTag1(A); entity.setClassTag2(ibbb); entity.setClassTag3(iccc); map.put(i12345678,entity); } // 借助org.apache.lucene工具类 System.out.println(List内存占用大小 RamUsageEstimator.humanSizeOf(map)); // 使用jdk8自带API System.out.println(List内存占用大小 ObjectSizeCalculator.getObjectSize(map)字节); System.out.println(List占用的内存大小为 new BigDecimal(ObjectSizeCalculator.getObjectSize(map)).divide(new BigDecimal(1024*1024)) MB); // 借助jol工具类 System.out.println(ClassLayout.parseInstance(map).toPrintable()); } }上述便是三种打印java 对象占用内存的方法。
返回列表