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));
}
}
分享到:
相关推荐
2. **使用第三方库**:有一些开源库,如`Eclipse Memory Analyzer Tool (MAT)`,提供了分析Java堆内存的功能,包括计算对象大小。MAT可以提供详细的内存报告,显示每个对象及其引用链的大小。另一个例子是`Apache ...
为了计算对象大小,我们需要借助一些第三方库或者自行实现。 一个常见的第三方库是`DeepSizeOf`,它来自Eclipse Collections框架,提供了类似于C++中的`sizeof`操作。使用这个库,你可以很容易地计算出一个对象及其...
本示例“测量Java对象大小的demo”提供了一种方法,通过使用Java的`java.lang.instrument`包来注入`javaagent`,进而利用`Instrumentation`接口测量Java对象的精确内存占用。下面我们将详细探讨这一过程。 首先,`...
这个例子通常会使用Java内置的`sun.misc.Unsafe`类或者第三方库如`java.lang.instrument.Instrumentation`来计算对象大小。`Unsafe`类提供了访问内存的底层功能,可以获取对象头和实例数据的大小。 在`...
4. **深/浅拷贝**:在计算对象大小时,需要区分深拷贝和浅拷贝。浅拷贝只复制对象本身,不包括引用的对象;深拷贝则会递归复制所有引用的对象,因此深拷贝的内存占用通常大于浅拷贝。 5. **垃圾收集与内存管理**:...
- **JOL (Java Object Layout)**:由Azul Systems开发的轻量级库,通过反射和JNI技术来计算对象的精确大小。 6. **源码分析**:通过阅读JVM的源码,如OpenJDK,可以更深入地理解对象是如何在内存中布局的。 7. **...
这两种参数的组合会影响对象和数组的大小。 1. 对象的内存存储布局: 当开启这两项压缩选项时,对象的引用占据4个字节。实验中创建了一个名为`Person`的对象,发现其占用32字节。这32字节通常包括:对象头(12字节...
总的来说,Python中计算对象内存大小的方法不仅有助于优化内存使用,还可以提高代码的可维护性和性能。通过`sys.getsizeof()`和递归算法,我们可以深入理解Python对象在内存中的表示方式,这对于调试、性能分析和...
本篇文章将深入探讨如何计算Java对象占用的内存字节数,以及影响这一数值的因素。 首先,Java对象在堆内存中由四个部分组成:对象头(A)、基本类型域(B)、引用类型域(C)和填充物(D)。 **对象头(A)**: ...
这可能包括计算对象的头信息、属性名和属性值的大小,以及考虑数组、对象引用和其他复杂结构。对于深度对象,`sizeOfDeep`可能采用递归方式遍历对象的所有属性和子属性,累加它们的大小。 在实际应用中,`sizeOf`...
当缓存大小成为问题时,可以通过调整缓存策略(如使用弱引用、软引用或计算对象的引用强度)来减少内存占用。同时,及时释放不再使用的对象,防止内存泄漏,也是提升系统稳定性和效率的重要手段。 总的来说,理解...
1. **递归计算目录大小**:对于包含多个子目录和文件的目录,该类可能提供一个方法来递归遍历所有文件并累加它们的大小,从而得到整个目录的总大小。 2. **处理大文件**:如果文件过大,`filesize()`函数可能会遇到...
`ehcacheconfigurable sizeof`引擎可能是可以配置的,这意味着开发者可以根据具体需求调整其行为,例如选择不同的策略来计算对象大小,或者对特定类型的对象进行特殊处理。 在深入理解`sizeof`引擎之前,我们需要先...
如果属性的[[Enumerable]]特性为true,则该属性可以被for...in循环枚举,这也是本文中计算对象大小所依赖的特性。 下面介绍如何编写`objectSize`函数以获取对象中可枚举属性的数量。基本思路是遍历对象的所有属性,...
面向对象编程允许我们将复杂的计算过程分解成一系列独立的实体,即对象,每个对象都有其特定的功能和数据。在数值计算中,这些对象可以是矩阵、向量、复数或者更复杂的数学结构。通过封装这些对象,我们可以隐藏内部...
根据给定的信息,本文将详细解释如何在Java中计算两个日期之间的时间差,并演示如何比较两个日期的大小。 ### 计算两个日期间的时间差 #### 使用`java.util.Date`和`java.text.SimpleDateFormat` 首先,我们需要...
3. **应用透明度**:使用Illustrator的API,脚本会将计算出的随机透明度值应用到选定的对象上,改变它们的可见性。 4. **保护底层元素**:在调整透明度时,脚本可能还会考虑底层元素,确保它们不会因上层元素的透明...
在Java编程语言中,`sizeof`关键字并不像C++那样直接用于计算对象或类型的大小。Java没有提供内置的`sizeof`操作符,因为它的内存管理是自动的,由垃圾收集器(GC)处理。然而,程序员有时仍需要了解对象占用的内存...
本知识点主要关注如何利用易语言结合FileSystemObject(FSO)对象来获取文件夹的大小。FSO是Microsoft脚本语言中的一种功能,允许开发者在Windows操作系统上进行文件和文件夹的管理工作。 首先,我们要了解FSO对象...