maven
utilcom.carrotsearch java-sizeof 0.0.3
public class SizeOfUtil { public static enum SizeEnum { B { @Override public double getFromByteSize(long byteSize) { return byteSize; } },K { @Override public double getFromByteSize(long byteSize) { return byteSize*1.0/1024; } },M { @Override public double getFromByteSize(long byteSize) { return byteSize*1.0/1024/1024; } },G { @Override public double getFromByteSize(long byteSize) { return byteSize*1.0/1024/1024/1024; } }; public abstract double getFromByteSize(long byteSize); } /** * 默認 * 返回bytes * @param o * @return */ public static double getObjectSize(Object o,SizeEnum sizeEnum){ long byteSize = 0; if(o instanceof Collection>){ byteSize = RamUsageEstimator.sizeOfAll(o); }else{ byteSize = RamUsageEstimator.sizeOf(o); } return sizeEnum.getFromByteSize(byteSize); } }使用
System.out.println(SizeOfUtil.getObjectSize(map, SizeOfUtil.SizeEnum.K));
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/66952.html
計算前提 JDK 版本,不同版本的類可能會有變化 要區(qū)分是 32bit 還是 64bit 系統(tǒng) 是否開啟壓縮指針(默認開啟,指針為 4Byte,否則為 8Byte) 是否數(shù)組,數(shù)組對象頭多了一個長度值,占 4Byte 計算方法 對象所占內(nèi)存 = 對象頭 + 所有域 + 填充其中,若域為另一個對象,即非基本類型,則需遞歸計算 對象頭 對象頭分為3部分: mark word:同步狀態(tài)、GC狀態(tài)、...
摘要:下面是線程相關(guān)的熱門面試題,你可以用它來好好準備面試。線程安全問題都是由全局變量及靜態(tài)變量引起的。持有自旋鎖的線程在之前應該釋放自旋鎖以便其它線程可以獲得自旋鎖。 最近看到網(wǎng)上流傳著,各種面試經(jīng)驗及面試題,往往都是一大堆技術(shù)題目貼上去,而沒有答案。 不管你是新程序員還是老手,你一定在面試中遇到過有關(guān)線程的問題。Java語言一個重要的特點就是內(nèi)置了對并發(fā)的支持,讓Java大受企業(yè)和程序員...
摘要:對于不同的實現(xiàn),對象占用的內(nèi)存空間大小可能不盡相同,本文主要分析中的情況,實驗環(huán)境為位系統(tǒng),使用進行結(jié)論驗證。內(nèi)存占用這里分析一個只有一組鍵值對的結(jié)構(gòu)如下首先分析本身的大小。 本文深入分析并驗證了不同Java對象占用內(nèi)存空間大小的情況。對于不同的jvm實現(xiàn),Java對象占用的內(nèi)存空間大小可能不盡相同,本文主要分析HotSpot jvm中的情況,實驗環(huán)境為64位window10系統(tǒng)、JD...
摘要:當復制集合中的所有元素來創(chuàng)建新的集合時,要求集合中的所有元素必須是同一個枚舉類的枚舉值各實現(xiàn)類的性能分析的性能總比好,特別是最常用的添加查詢元素等操作。因為需要額外的紅黑樹算法來維護集合元素的次序。在創(chuàng)建時進行,以防對集合的意外非同步訪問 HashSet 大多時候使用Set集合時就是使用HashSet實現(xiàn)類。HashSet按Hash算法來存儲集合中的元素,因此具有很好的存取和查找性能 ...
摘要:由于的自動內(nèi)存管理系統(tǒng)要求對象起始地址必須是字節(jié)的整數(shù)倍,換句話說,就是對象的大小必須是字節(jié)的整數(shù)倍。對象大小計算要點在位系統(tǒng)下,存放指針的空間大小是字節(jié),是字節(jié),對象頭為字節(jié)。靜態(tài)屬性不算在對象大小內(nèi)。 jvm系列 垃圾回收基礎 JVM的編譯策略 GC的三大基礎算法 GC的三大高級算法 GC策略的評價指標 JVM信息查看 GC通用日志解讀 jvm的card table數(shù)據(jù)結(jié)構(gòu) Ja...
閱讀 1001·2023-04-26 00:11
閱讀 2767·2021-11-04 16:13
閱讀 2240·2021-09-09 09:33
閱讀 1623·2021-08-20 09:35
閱讀 4026·2021-08-09 13:42
閱讀 3717·2019-08-30 15:55
閱讀 1247·2019-08-30 15:55
閱讀 2310·2019-08-30 13:55