JAVA中求解物件所佔位元組大小
該類為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();
}
}
例如:物件SMatrix
首先在定義類SMatrix時,必須為
public class SMatrix implements Serializable{
//***
}
一定要注意的一個問題是:所計算的物件必須要實現implements Serializable
相關文章
- Java陣列物件佔用多少個位元組?Java陣列物件
- C語言列舉型別所佔位元組大小例項解析C語言型別
- Java中boolean到底佔幾位元組?JavaBoolean
- java中基本型別佔用位元組數Java型別
- 【轉】Mysql中varchar存放中文與英文所佔位元組異同MySql
- utf-8字元所佔位元組數字元
- Java基本型別佔用的位元組數(char佔用幾個位元組問題)Java型別
- Java char 型別究竟佔幾個位元組?Java型別
- JAVA——一個漢字佔用多少位元組?Java
- Java基本資料型別記憶體佔用位元組大小,取值範圍和預設值Java資料型別記憶體
- Linux中各資料夾所佔空間大小技巧Linux
- Java 位元組碼Java
- 解決 requests 庫中的位元組物件問題物件
- Oracle中文漢字佔用位元組Oracle
- Qt 大小端位元組序的處理QT
- Object o = new Object()佔多少個位元組?-物件的記憶體佈局Object物件記憶體
- 檢視ORACLE的表所佔空間大小Oracle
- Java位元組碼指令Java
- oracle 檢視錶所佔用的空間大小Oracle
- SQL Server檢視所有表大小,所佔空間SQLServer
- java 獲取物件大小Java物件
- JAVA動態位元組碼Java
- java 位元組陣列取反Java陣列
- 【Java】JVM位元組碼分析JavaJVM
- <摘錄>位元組對齊與結構體大小結構體
- 用JavaScript計算字串佔用位元組數JavaScript字串
- win10怎麼看資料夾所佔空間的大小 windows10如何檢視檔案所佔空間大小Win10Windows
- 【附錄】 字符集(一) 漢字在oracle中佔用位元組數Oracle
- Java位元組碼指令表Java
- Java 位元組的常用封裝Java封裝
- 輕鬆看懂Java位元組碼Java
- Java位元組碼忍者禁術Java
- Java IO3:位元組流Java
- Java的魔力:位元組碼(轉)Java
- .NET刪除位元組陣列中的0位元組陣列
- 1.iOS --佔用的位元組的總結iOS
- 騰訊面試,面試官第一個問題是Int佔多少位元組,程式設計師不知所措面試程式設計師
- ORACLE 資料型別佔用的位元組數(轉)Oracle資料型別