哪里的郑州网站建设,图片类网站 怎么做优化,怎么弄自己的网站卖东西,官网首页优化如何计算java对象所占内存大小#xff0c;可以使用下述三种方法。
使用jdk8自带API
使用下面语句打印对象所占内存大小#xff1a;需要保证jdk版本是jdk8。System.out.println(ObjectSizeCalculator.getObjectSize(3L));
借助org.apache.lucene工具类
引入maven坐标 … 如何计算java对象所占内存大小可以使用下述三种方法。
使用jdk8自带API
使用下面语句打印对象所占内存大小需要保证jdk版本是jdk8。System.out.println(ObjectSizeCalculator.getObjectSize(3L));
借助org.apache.lucene工具类
引入maven坐标 dependencygroupIdorg.apache.lucene/groupIdartifactIdlucene-core/artifactIdversion4.0.0/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.12.0/version/dependency // 使用jdk8自带APISystem.out.println(List内存占用大小 ObjectSizeCalculator.getObjectSize(map)字节);System.out.println(List占用的内存大小为 new BigDecimal(ObjectSizeCalculator.getObjectSize(map)).divide(new BigDecimal(1024*1024)) MB);借助jol工具类
引入maven坐标 dependencygroupIdorg.openjdk.jol/groupIdartifactIdjol-core/artifactIdversion0.9/version/dependency System.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自带APISystem.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 对象占用内存的方法。
更多消息资讯请访问昂焱数据。