查看java对象所占内存大小的方法

 更新时间:2023年09月18日 10:51:37   作者:King斌  
这篇文章主要为大家介绍了如何查看java对象所占内存大小的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

计算java对象所占内存大小

1.使用jdk8自带API

使用这种jdk8方式时,Open JDK 不是天然支持的,需要set一下环境变量

System.setProperty("java.vm.name","Java HotSpot(TM) ");
System.out.println(ObjectSizeCalculator.getObjectSize(3L));

结果如下:

2. 借助org.apache.lucene工具类

当一个对象有多个属性,需要计算整个对象的大小时,可以借助org.apache.lucene工具类

先引入maven坐标

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>4.0.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

测试代码:

        Map<String, String> map = new HashMap<>();
        System.out.println("map init value is " + RamUsageEstimator.sizeOf(map));
        for (int i = 0; i < 100; i++) {
            RandomStringUtils.randomAlphanumeric(100);
            map.put(RandomStringUtils.randomAlphanumeric(10), RandomStringUtils.randomAlphanumeric(10));
        }
        System.out.println("map size 100, value is " + RamUsageEstimator.sizeOf(map));
        System.out.println("map size 100, value is " + RamUsageEstimator.humanSizeOf(map));

结果如下:

3. 借助jol工具类

如果需要查看某个对象的详细内存分布,可以借助jol工具类,不过这种当对象中内嵌其他对象时,只能计算ClassLayout方法中这个object对象所占内存的大小

先导入maven坐标

        <dependency>
            <groupId>org.openjdk.jol</groupId>
            <artifactId>jol-core</artifactId>
            <version>0.9</version>
        </dependency>

测试代码:

System.out.println(ClassLayout.parseInstance(23L).toPrintable());

结果如下:

以上就是查看java对象所占内存大小的方法的详细内容,更多关于java对象内存大小的资料请关注脚本之家其它相关文章!

相关文章

  • 一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件的详细教程

    一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件的详细教程

    这篇文章主要介绍了一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • springboot国际化多语言配置方式

    springboot国际化多语言配置方式

    这篇文章主要介绍了springboot国际化多语言配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • SpringBoot接口如何统一异常处理

    SpringBoot接口如何统一异常处理

    这篇文章主要介绍了SpringBoot接口如何统一异常处理,SpringBoot接口如何对异常进行统一封装,并统一返回呢?以下文的参数校验为例,如何优雅的将参数校验的错误信息统一处理并封装返回呢,感兴趣的下下伙伴可以一同参考一下
    2022-07-07
  • Socket与ServerSocket类构造方法与API

    Socket与ServerSocket类构造方法与API

    今天小编为大家整理了Socket与ServerSocket类构造方法与API,对大家的学习或工作具有一定的参考借鉴价值。需要的朋友可以收藏下,方便下次浏览观看
    2021-12-12
  • Java中比较运算符compareTo()、equals()与==的区别及应用总结

    Java中比较运算符compareTo()、equals()与==的区别及应用总结

    这篇文章主要给大家介绍了关于Java中比较运算符compareTo()、equals()与==的区别及应用的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-09-09
  • SpringCloud Feign实现微服务之间相互请求问题

    SpringCloud Feign实现微服务之间相互请求问题

    Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地实现微服务之间的调用,这篇文章主要介绍了SpringCloud Feign实现微服务之间相互请求,需要的朋友可以参考下
    2022-06-06
  • 浅析Java集合及LIst接口

    浅析Java集合及LIst接口

    这篇文章主要介绍了Java集合及LIst接口,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • springcloud配置ssh的问题及解决方法

    springcloud配置ssh的问题及解决方法

    这篇文章主要介绍了springcloud配置ssh,本文给大家介绍在配置过程中遇到的问题及解决方法,通过结合实例给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java-web中利用RSA进行加密解密操作的方法示例

    Java-web中利用RSA进行加密解密操作的方法示例

    这篇文章主要给大家介绍了关于在Java-web中利用RSA进行加密解密操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • springSecurity之AuthenticationProvider用法解析

    springSecurity之AuthenticationProvider用法解析

    这篇文章主要介绍了springSecurity之AuthenticationProvider用法解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论