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); } /** * 默認(rèn) * 返回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://systransis.cn/yun/66952.html
計(jì)算前提 JDK 版本,不同版本的類可能會有變化 要區(qū)分是 32bit 還是 64bit 系統(tǒng) 是否開啟壓縮指針(默認(rèn)開啟,指針為 4Byte,否則為 8Byte) 是否數(shù)組,數(shù)組對象頭多了一個(gè)長度值,占 4Byte 計(jì)算方法 對象所占內(nèi)存 = 對象頭 + 所有域 + 填充其中,若域?yàn)榱硪粋€(gè)對象,即非基本類型,則需遞歸計(jì)算 對象頭 對象頭分為3部分: mark word:同步狀態(tài)、GC狀態(tài)、...
摘要:下面是線程相關(guān)的熱門面試題,你可以用它來好好準(zhǔn)備面試。線程安全問題都是由全局變量及靜態(tài)變量引起的。持有自旋鎖的線程在之前應(yīng)該釋放自旋鎖以便其它線程可以獲得自旋鎖。 最近看到網(wǎng)上流傳著,各種面試經(jīng)驗(yàn)及面試題,往往都是一大堆技術(shù)題目貼上去,而沒有答案。 不管你是新程序員還是老手,你一定在面試中遇到過有關(guān)線程的問題。Java語言一個(gè)重要的特點(diǎn)就是內(nèi)置了對并發(fā)的支持,讓Java大受企業(yè)和程序員...
摘要:對于不同的實(shí)現(xiàn),對象占用的內(nèi)存空間大小可能不盡相同,本文主要分析中的情況,實(shí)驗(yàn)環(huán)境為位系統(tǒng),使用進(jìn)行結(jié)論驗(yàn)證。內(nèi)存占用這里分析一個(gè)只有一組鍵值對的結(jié)構(gòu)如下首先分析本身的大小。 本文深入分析并驗(yàn)證了不同Java對象占用內(nèi)存空間大小的情況。對于不同的jvm實(shí)現(xiàn),Java對象占用的內(nèi)存空間大小可能不盡相同,本文主要分析HotSpot jvm中的情況,實(shí)驗(yàn)環(huán)境為64位window10系統(tǒng)、JD...
摘要:當(dāng)復(fù)制集合中的所有元素來創(chuàng)建新的集合時(shí),要求集合中的所有元素必須是同一個(gè)枚舉類的枚舉值各實(shí)現(xiàn)類的性能分析的性能總比好,特別是最常用的添加查詢元素等操作。因?yàn)樾枰~外的紅黑樹算法來維護(hù)集合元素的次序。在創(chuàng)建時(shí)進(jìn)行,以防對集合的意外非同步訪問 HashSet 大多時(shí)候使用Set集合時(shí)就是使用HashSet實(shí)現(xiàn)類。HashSet按Hash算法來存儲集合中的元素,因此具有很好的存取和查找性能 ...
摘要:由于的自動內(nèi)存管理系統(tǒng)要求對象起始地址必須是字節(jié)的整數(shù)倍,換句話說,就是對象的大小必須是字節(jié)的整數(shù)倍。對象大小計(jì)算要點(diǎn)在位系統(tǒng)下,存放指針的空間大小是字節(jié),是字節(jié),對象頭為字節(jié)。靜態(tài)屬性不算在對象大小內(nèi)。 jvm系列 垃圾回收基礎(chǔ) JVM的編譯策略 GC的三大基礎(chǔ)算法 GC的三大高級算法 GC策略的評價(jià)指標(biāo) JVM信息查看 GC通用日志解讀 jvm的card table數(shù)據(jù)結(jié)構(gòu) Ja...
閱讀 866·2023-04-26 00:11
閱讀 2666·2021-11-04 16:13
閱讀 2116·2021-09-09 09:33
閱讀 1483·2021-08-20 09:35
閱讀 3836·2021-08-09 13:42
閱讀 3615·2019-08-30 15:55
閱讀 1075·2019-08-30 15:55
閱讀 2228·2019-08-30 13:55