文档章节

java计算object大小

go4it
 go4it
发布于 2017/04/05 23:01
字数 118
阅读 232
收藏 2

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

##maven

        <!-- size of-->
        <dependency>
            <groupId>com.carrotsearch</groupId>
            <artifactId>java-sizeof</artifactId>
            <version>0.0.3</version>
        </dependency>

##util

public class SizeOfUtil {

    public static enum SizeEnum {
        B {
            @Override
            public double getFromByteSize(long byteSize) {
                return byteSize;
            }
        },K {
            @Override
            public double getFromByteSize(long byteSize) {
                return byteSize*1.0/1024;
            }
        },M {
            @Override
            public double getFromByteSize(long byteSize) {
                return byteSize*1.0/1024/1024;
            }
        },G {
            @Override
            public double getFromByteSize(long byteSize) {
                return byteSize*1.0/1024/1024/1024;
            }
        };

        public abstract double getFromByteSize(long byteSize);
    }

    /**
     * 默认
     * 返回bytes
     * @param o
     * @return
     */
    public static double getObjectSize(Object o,SizeEnum sizeEnum){
        long byteSize = 0;
        if(o instanceof Collection<?>){
            byteSize = RamUsageEstimator.sizeOfAll(o);
        }else{
            byteSize = RamUsageEstimator.sizeOf(o);
        }
        return sizeEnum.getFromByteSize(byteSize);
    }
}

##使用

System.out.println(SizeOfUtil.getObjectSize(map, SizeOfUtil.SizeEnum.K));

© 著作权归作者所有

go4it
粉丝 93
博文 1350
码字总数 1256125
作品 0
深圳
私信 提问
加载中

评论(0)

jvm详情——2、Java对象在jvm中的大小

Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了。对于非基本类型的Java对象,其大小就值得商榷。 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个没有任...

osc_lpj39135
2018/12/27
5
0
java计算对象占用内存大小:lucene专用于计算堆内存占用大小的工具类

RamUsageEstimator,maven坐标: RamUsageEstimator就是根据java对象在堆内存中的存储格式, 通过计算Java对象头、实例数据、引用等的大小,相加而得,如果有引用,还能递归计算引用对象的大...

杨春炼
2018/08/24
2.3K
2
怎样计算一个 Java 对象大小?这儿有几种方法

在计算机发展的早期阶段,硬件的发展速度慢,容量小,所以软件开发人员写起代码里对 byte、bit 都是「斤斤计较」,这才使用写出来的应用能在我们今天看起来那么小的,配置那么低的硬件中运行...

osc_xs6whvw7
03/24
10
0
一种Java中对象实例占用堆空间衡量方法

本文的方法是利用java.lang.Instrumentation的工具类来实现的,之前看过一篇红薯的文章介绍了这方面的内容就跟着做了下,并总结出一套比较靠谱的推算方式。红薯的文章因为是当时看的没有记录...

gangzz
2013/04/05
799
3
一个Java对象到底占用多大内存?

在进行 JVM 调优时,我们经常关注 JVM 各个区域大小以及相关参数,从而进行特定的优化,在一次排查内存溢出问题时我不禁想到一个问题,一个 Java 对象到底占用多大内存?下面我们就来分析验证...

osc_tzh2wzwm
2019/12/17
4
0

没有更多内容

加载失败,请刷新页面

加载更多

基于Centos7系统一键部署EFK服务

最近平台EFK版本均作了升级,平台采用EFK(ElasticSearch-7.6.2 + FileBeat-7.6.2 + Kibana-7.6.2)架构。这里建议三个组件主次版本保持一致。考虑到服务器比较多,所以写成脚本来批量部署。 ...

linuxprobe2020
36分钟前
19
0
检查键是否存在于JavaScript对象中? - Checking if a key exists in a JavaScript object?

问题: How do I check if a particular key exists in a JavaScript object or array? 如何检查JavaScript对象或数组中是否存在特定键? If a key doesn't exist, and I try to access it, ......

fyin1314
今天
27
0
jasypt-spring-boot提示Failed to bind properties

1 问题描述 在Spring Boot中使用jasypt-spring-boot进行加密,但是提示: Description:Failed to bind properties under 'spring.datasource.password' to java.lang.String: Reason:......

氷泠
今天
29
0
在git 2.13之前,只保存多个已更改的文件中的一个文件

问题: 如何在我的分支上只隐藏多个已更改文件中的一个? 解决方案: 参考一: https://stackoom.com/question/Cl3h/在git-之前-只保存多个已更改的文件中的一个文件 参考二: https://oldb...

技术盛宴
今天
30
0
SQL笔记:把Excel的数据导入MySQL中作运算

很多Excel用户都知道,Excel单个工作簿单张表存储的数据量很有限(旧版本月60多万条记录,新版本也才104万条不到),而且Excel中,因为自带各种格式与公式,兼之高度封装性等原因,导致Excel...

tengyulong
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部