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
- utf-8字元所佔位元組數字元
- JAVA——一個漢字佔用多少位元組?Java
- Java char 型別究竟佔幾個位元組?Java型別
- Linux中各資料夾所佔空間大小技巧Linux
- Java基本資料型別記憶體佔用位元組大小,取值範圍和預設值Java資料型別記憶體
- C#--得到物件在記憶體中的大小和把記憶體中的位元組轉換為字串C#物件記憶體字串
- 解決 requests 庫中的位元組物件問題物件
- Qt 大小端位元組序的處理QT
- Java 位元組碼Java
- Object o = new Object()佔多少個位元組?-物件的記憶體佈局Object物件記憶體
- SQL Server檢視所有表大小,所佔空間SQLServer
- Oracle中文漢字佔用位元組Oracle
- win10怎麼看資料夾所佔空間的大小 windows10如何檢視檔案所佔空間大小Win10Windows
- 快手取消大小周15天后,位元組急了?
- JAVA動態位元組碼Java
- 【Java】JVM位元組碼分析JavaJVM
- Redis 檢視所有 key 的 value 值所佔記憶體大小Redis記憶體
- Java 位元組的常用封裝Java封裝
- 輕鬆看懂Java位元組碼Java
- Java位元組碼指令表Java
- Java類轉位元組碼工具Java
- 1.iOS --佔用的位元組的總結iOS
- 位元組跳動1/3員工反對取消“大小周”
- 例項分析理解Java位元組碼Java
- java入門(字元流、位元組流)Java字元
- Java位元組碼增強技術Java
- Solidity語言學習筆記————13、固定大小位元組陣列Solid筆記陣列
- 如何檢視ORACLE的LOB(BLOB和CLOB)物件佔用的大小Oracle物件
- 位元組&北大Nature子刊新成果:自旋本徵態的高效精確求解
- Java 動態性(4) – 位元組碼操作Java
- 從 Java 位元組碼到 ASM 實踐JavaASM
- 學習 Java 之 位元組碼驗證Java
- Java緩衝輸出位元組流BufferedOutputStreamJava
- Dalvik 和 Java 位元組碼的比較Java
- matlab求解方程組Matlab
- 【HotSpot】一個java物件佔多少空間HotSpotJava物件