Java的Sizeof實現

轉自http://www.importnew.com/1306.html

這個類庫包含一個公共類:com.codeinstructions.sizeof.SizeOf,它實現了5個公共方法:

static long deepSize(java.lang.Object object) – 計算給定對象的deep size。
static long deepSize(java.lang.Object object, long maxSize) – 計算給定對象的deep size,但是爲了避免深入到一個非常大的對象樹中,因此只計算到給定的程度爲止(maxSize)。
static long depthLimitedDeepSize(java.lang.Object object, int depth) – 返回給定對象的deep size,但是隻計算到給定的深度(depth)。

static boolean isLargerThan(java.lang.Object object, long size) – 判斷給定對象的deep size是否超過給定的限制(size)。
static int shallowSize(java.lang.Object object) – 返回給定對象的shallow size。

完整的java文檔請看這裏

工作原理

這個類庫基本上就是用反射(reflection)來得到類的內部細節,從而計算出其實例的大小。同樣,也是用反射來遍歷對象圖來計算其deep size。
目前爲止這個類庫還是試驗版本,僅在32位的Java 6的JDK第11個升級版上測試通過。
這個類庫有BSD風格公共許可(BSD-like public license),也就是說只要你也遵守這個許可,就可以按照自己的喜好對這個類庫進行修改了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章