文档章节

java计算object大小

go4it
 go4it
发布于 2017/04/05 23:01
字数 118
阅读 17
收藏 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
粉丝 76
博文 852
码字总数 743816
作品 0
深圳
私信 提问
JVM概念之Java对象的大小与引用类型

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

crazyinsomnia
2010/01/09
459
0
java计算对象占用内存大小:lucene专用于计算堆内存占用大小的工具类

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

杨春炼
2018/08/24
0
2
JVM(Thread/Stack)

JVM Thread/Stack Memory Size JVM Thread/Stack Object states (6 states) JVisualVM

赵-猛
2016/10/12
0
0
一种Java中对象实例占用堆空间衡量方法

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

gangzz
2013/04/05
0
3
new一个Object对象占用多少内存?

Java的自动内存管理机制(automatic storage management system known as a garbage collector)省却了很多编码工作,大大地提高了Java的生产力,而且JVM的性能也越来越好,特别是G1的出现,...

杨尚川
2014/03/15
0
7

没有更多内容

加载失败,请刷新页面

加载更多

关于eclipse2017 import javax.servlet.jsp.tagext引入错误得问题

在eclipse中: 这个javax.servlet.jsp.tagext属于是tomcat相关jar包找到jsp-api.jar 在tomcat文件夹下边的lib文件夹中就有 如果项目中报错的话 把这个加入到项目中 在myeclipse中: 如下图,...

ZhangLG
19分钟前
1
0
如何用RSS订阅?

本文由云+社区发表 摘要:我们常常会有订阅别人文章的需求,有更新的时候希望能有提醒的功能,RSS就是这样一个订阅的方式。很多网站上看到RSS的入口,点进去以后总是显示一堆的XML代码,我们...

腾讯云加社区
20分钟前
1
0
springcloud整体架构

架构 说明 针对这个架构图我分层介绍一下: 1、是web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域访问的时候问题很多。所以我们ngi...

张欢19933
22分钟前
1
0
Linux权限详解

Linux权限详解 命令之 chmod:修改权限 阅读目录(Content) 权限简介 一、快速入门 更改文件权限 (chmod命令) 一般使用格式 数字权限使用格式 更改文件拥有者(chown命令) 二、Linux权限详...

hblt-j
29分钟前
1
0
postgres预写式日志的内核实现详解-heap2类型

导读: postgres预写式日志的内核实现详解-概述 postgres预写式日志的内核实现详解-wal记录结构 postgres预写式日志的内核实现详解-wal记录写入 postgres预写式日志的内核实现详解-wal记录读...

movead
46分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部