`
chenjingbo
  • 浏览: 460578 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

计算对象大小。

 
阅读更多

 

 

package com.taobao.ju.c2b.item.manager.impl;

import com.taobao.ju.c2b.item.domain.ItemOnlineBO;

import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.Date;


public final class SizeCalculator {
    public static int calcSize(java.io.Serializable o) {
        int ret = 0;
        class DumbOutputStream extends OutputStream {
            int count = 0;
            public void write(int b) throws IOException {
                count++; // 只计数,不产生字节转移
                }
            }
        DumbOutputStream buf = new DumbOutputStream();
        ObjectOutputStream os = null;
        try {
            os = new ObjectOutputStream(buf);
            os.writeObject(o);
            ret = buf.count;
            } catch (IOException e) {
            // No need handle this exception
            e.printStackTrace();
            ret = -1;
            } finally {
            try {
                os.close();
                } catch (Exception e) {
                }
            }
        return ret;
        }
    public static void main(String[] args){
        ItemOnlineBO itemOnlineBO = new ItemOnlineBO();
        itemOnlineBO.setActivityPrice(2012l);
        itemOnlineBO.setOriginPrice(2012l);
        itemOnlineBO.setAttributes("wewfefwewe");
        itemOnlineBO.setBuyEndTime(new Date());
        itemOnlineBO.setBuyStartTime(new Date());
        itemOnlineBO.setCategoryId(2013l);
        itemOnlineBO.setCommentary("wefwewewfe");
        itemOnlineBO.setFollowEndTime(new Date());
        itemOnlineBO.setFollowStartTime(new Date());
        itemOnlineBO.setId(2013l);
        itemOnlineBO.setItemId(2014l);
        itemOnlineBO.setStatus(10);
        itemOnlineBO.setTaobaoCategory(21001l);
        itemOnlineBO.setUserId(21451l);
        itemOnlineBO.setUmpId(5524411l);
        itemOnlineBO.setSellerId(254111l);
        System.out.println(calcSize(itemOnlineBO));
        }
}
分享到:
评论

相关推荐

    计算java对象大小

    2. **使用第三方库**:有一些开源库,如`Eclipse Memory Analyzer Tool (MAT)`,提供了分析Java堆内存的功能,包括计算对象大小。MAT可以提供详细的内存报告,显示每个对象及其引用链的大小。另一个例子是`Apache ...

    java 通过sizeOf计算一个对象的大小

    为了计算对象大小,我们需要借助一些第三方库或者自行实现。 一个常见的第三方库是`DeepSizeOf`,它来自Eclipse Collections框架,提供了类似于C++中的`sizeof`操作。使用这个库,你可以很容易地计算出一个对象及其...

    测量Java对象大小的demo

    本示例“测量Java对象大小的demo”提供了一种方法,通过使用Java的`java.lang.instrument`包来注入`javaagent`,进而利用`Instrumentation`接口测量Java对象的精确内存占用。下面我们将详细探讨这一过程。 首先,`...

    JAVA对象所占内存大小计算例子

    这个例子通常会使用Java内置的`sun.misc.Unsafe`类或者第三方库如`java.lang.instrument.Instrumentation`来计算对象大小。`Unsafe`类提供了访问内存的底层功能,可以获取对象头和实例数据的大小。 在`...

    计算对象占用内存空间ObjectSize-master.zip

    4. **深/浅拷贝**:在计算对象大小时,需要区分深拷贝和浅拷贝。浅拷贝只复制对象本身,不包括引用的对象;深拷贝则会递归复制所有引用的对象,因此深拷贝的内存占用通常大于浅拷贝。 5. **垃圾收集与内存管理**:...

    计算java对象的大小的方法

    - **JOL (Java Object Layout)**:由Azul Systems开发的轻量级库,通过反射和JNI技术来计算对象的精确大小。 6. **源码分析**:通过阅读JVM的源码,如OpenJDK,可以更深入地理解对象是如何在内存中布局的。 7. **...

    Java 对象(数组)占多大空间(几个字节) 手把手做实验

    这两种参数的组合会影响对象和数组的大小。 1. 对象的内存存储布局: 当开启这两项压缩选项时,对象的引用占据4个字节。实验中创建了一个名为`Person`的对象,发现其占用32字节。这32字节通常包括:对象头(12字节...

    Python实现计算对象的内存大小示例

    总的来说,Python中计算对象内存大小的方法不仅有助于优化内存使用,还可以提高代码的可维护性和性能。通过`sys.getsizeof()`和递归算法,我们可以深入理解Python对象在内存中的表示方式,这对于调试、性能分析和...

    计算一个Java对象占用字节数的方法

    本篇文章将深入探讨如何计算Java对象占用的内存字节数,以及影响这一数值的因素。 首先,Java对象在堆内存中由四个部分组成:对象头(A)、基本类型域(B)、引用类型域(C)和填充物(D)。 **对象头(A)**: ...

    sizeof:Node.js 对象大小

    这可能包括计算对象的头信息、属性名和属性值的大小,以及考虑数组、对象引用和其他复杂结构。对于深度对象,`sizeOfDeep`可能采用递归方式遍历对象的所有属性和子属性,累加它们的大小。 在实际应用中,`sizeOf`...

    统计缓存(java对象所占的内存)大小

    当缓存大小成为问题时,可以通过调整缓存策略(如使用弱引用、软引用或计算对象的引用强度)来减少内存占用。同时,及时释放不再使用的对象,防止内存泄漏,也是提升系统稳定性和效率的重要手段。 总的来说,理解...

    计算文件大小的php代码类.zip

    1. **递归计算目录大小**:对于包含多个子目录和文件的目录,该类可能提供一个方法来递归遍历所有文件并累加它们的大小,从而得到整个目录的总大小。 2. **处理大文件**:如果文件过大,`filesize()`函数可能会遇到...

    common-22.7.0.zip

    `ehcacheconfigurable sizeof`引擎可能是可以配置的,这意味着开发者可以根据具体需求调整其行为,例如选择不同的策略来计算对象大小,或者对特定类型的对象进行特殊处理。 在深入理解`sizeof`引擎之前,我们需要先...

    JavaScript获得指定对象大小的方法

    如果属性的[[Enumerable]]特性为true,则该属性可以被for...in循环枚举,这也是本文中计算对象大小所依赖的特性。 下面介绍如何编写`objectSize`函数以获取对象中可枚举属性的数量。基本思路是遍历对象的所有属性,...

    C++和面向对象数值计算

    面向对象编程允许我们将复杂的计算过程分解成一系列独立的实体,即对象,每个对象都有其特定的功能和数据。在数值计算中,这些对象可以是矩阵、向量、复数或者更复杂的数学结构。通过封装这些对象,我们可以隐藏内部...

    计算时间差以及比较日期大小

    根据给定的信息,本文将详细解释如何在Java中计算两个日期之间的时间差,并演示如何比较两个日期的大小。 ### 计算两个日期间的时间差 #### 使用`java.util.Date`和`java.text.SimpleDateFormat` 首先,我们需要...

    AI illustrator 脚本jsx 源码 随机调节对象大小及透明度

    3. **应用透明度**:使用Illustrator的API,脚本会将计算出的随机透明度值应用到选定的对象上,改变它们的可见性。 4. **保护底层元素**:在调整透明度时,脚本可能还会考虑底层元素,确保它们不会因上层元素的透明...

    sizeof 计算出实例的大小

    在Java编程语言中,`sizeof`关键字并不像C++那样直接用于计算对象或类型的大小。Java没有提供内置的`sizeof`操作符,因为它的内存管理是自动的,由垃圾收集器(GC)处理。然而,程序员有时仍需要了解对象占用的内存...

    易语言利用FSO对象取文件夹大小源码

    本知识点主要关注如何利用易语言结合FileSystemObject(FSO)对象来获取文件夹的大小。FSO是Microsoft脚本语言中的一种功能,允许开发者在Windows操作系统上进行文件和文件夹的管理工作。 首先,我们要了解FSO对象...

Global site tag (gtag.js) - Google Analytics