JAVA对象所占字节大小计算方法
来源:互联网 发布:淘宝退款纠纷率怎么算 编辑:程序博客网 时间:2024/06/05 20:06
该类为cache4j缓存框架中的工具类方法,该方法实现了两个接口
接口1:计算对象在内存中所占字节数
接口2:复制对象,实现深度克隆效果,实现原理为先序列化对象,然后在反序列化对象;返回一个新的对象,达到克隆效果
package net.sf.cache4j.impl;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
/**
*
* @version $Revision: 1.0 $ $Date:$
* @author Yuriy Stepovoy. <ahref="mailto:stepovoy@gmail.com">stepovoy@gmail.com</a>
**/
public class Utils {
/**
* 计算一个对象所占字节数
* @param o对象,该对象必须继承Serializable接口即可序列化
* @return
* @throws IOException
*/
public static int size(final Object o) throws IOException {
if (o == null) {
return 0;
}
ByteArrayOutputStream buf = new ByteArrayOutputStream(4096);
ObjectOutputStream out = new ObjectOutputStream(buf);
out.writeObject(o);
out.flush();
buf.close();
return buf.size();
}
/**
* 赋值对象,返回对象的引用,如果参数o为符合对象,则内部每一个对象必须可序列化
* @param o对象,该对象必须继承Serializable接口即可序列化
* @return
* @throws IOException
* @throws ClassNotFoundException
*/
public static Object copy(final Object o) throws IOException,
ClassNotFoundException {
if (o == null) {
return null;
}
ByteArrayOutputStream outbuf = new ByteArrayOutputStream(4096);
ObjectOutput out = new ObjectOutputStream(outbuf);
out.writeObject(o);
out.flush();
outbuf.close();
ByteArrayInputStream inbuf = new ByteArrayInputStream(outbuf.toByteArray());
ObjectInput in = new ObjectInputStream(inbuf);
return in.readObject();
}
}
- JAVA对象所占字节大小计算方法
- JAVA中求解对象所占字节大小
- Java中utf-8编码方式时所占字节数的计算方法封装
- C++常见类型所占字节大小
- C++ 数据类型所占字节大小
- 指针变量所占字节大小问题
- C++string所占字节大小
- JAVA——对象所占内存空间大小的计算
- sizeof - 计算对象所占字节
- 分析对象所占空间大小
- C++对象所占内存的大小
- Java中变量所占字节大小及有效取值范围
- java中文所占字节数
- java数据类型所占字节数
- 关于PCHAR所占字节大小的问题
- C++主要数据类型在计算机中所占字节大小
- C语言中指针变量所占字节大小
- 结构体在内存中所占字节大小计算
- acm成都赛区网络热身赛 Sum
- 海量空间数据库实施策略-栅格数据 7
- TCM in Deutschland und auf dieser Website
- JSTL学习笔记(1)
- 海量空间数据库实施策略-栅格数据 8
- JAVA对象所占字节大小计算方法
- 割接方案:友商分析
- bean的生命周期
- fgets函数
- JSTL学习笔记
- 开场白
- Effective Access Time
- 做错的题目c/c++
- 《地震及时通》1.0版介绍