查看java對(duì)象所占內(nèi)存大小的方法
計(jì)算java對(duì)象所占內(nèi)存大小
1.使用jdk8自帶API
使用這種jdk8方式時(shí),Open JDK 不是天然支持的,需要set一下環(huán)境變量
System.setProperty("java.vm.name","Java HotSpot(TM) "); System.out.println(ObjectSizeCalculator.getObjectSize(3L));
結(jié)果如下:
2. 借助org.apache.lucene工具類(lèi)
當(dāng)一個(gè)對(duì)象有多個(gè)屬性,需要計(jì)算整個(gè)對(duì)象的大小時(shí),可以借助org.apache.lucene工具類(lèi)
先引入maven坐標(biāo)
<dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
測(cè)試代碼:
Map<String, String> map = new HashMap<>(); System.out.println("map init value is " + RamUsageEstimator.sizeOf(map)); for (int i = 0; i < 100; i++) { RandomStringUtils.randomAlphanumeric(100); map.put(RandomStringUtils.randomAlphanumeric(10), RandomStringUtils.randomAlphanumeric(10)); } System.out.println("map size 100, value is " + RamUsageEstimator.sizeOf(map)); System.out.println("map size 100, value is " + RamUsageEstimator.humanSizeOf(map));
結(jié)果如下:
3. 借助jol工具類(lèi)
如果需要查看某個(gè)對(duì)象的詳細(xì)內(nèi)存分布,可以借助jol工具類(lèi),不過(guò)這種當(dāng)對(duì)象中內(nèi)嵌其他對(duì)象時(shí),只能計(jì)算ClassLayout方法中這個(gè)object對(duì)象所占內(nèi)存的大小
先導(dǎo)入maven坐標(biāo)
<dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency>
測(cè)試代碼:
System.out.println(ClassLayout.parseInstance(23L).toPrintable());
結(jié)果如下:
以上就是查看java對(duì)象所占內(nèi)存大小的方法的詳細(xì)內(nèi)容,更多關(guān)于java對(duì)象內(nèi)存大小的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文搞懂并學(xué)會(huì)使用SpringBoot的Actuator運(yùn)行狀態(tài)監(jiān)控組件的詳細(xì)教程
這篇文章主要介紹了一文搞懂并學(xué)會(huì)使用SpringBoot的Actuator運(yùn)行狀態(tài)監(jiān)控組件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Socket與ServerSocket類(lèi)構(gòu)造方法與API
今天小編為大家整理了Socket與ServerSocket類(lèi)構(gòu)造方法與API,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值。需要的朋友可以收藏下,方便下次瀏覽觀(guān)看2021-12-12Java中比較運(yùn)算符compareTo()、equals()與==的區(qū)別及應(yīng)用總結(jié)
這篇文章主要給大家介紹了關(guān)于Java中比較運(yùn)算符compareTo()、equals()與==的區(qū)別及應(yīng)用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-09-09SpringCloud?Feign實(shí)現(xiàn)微服務(wù)之間相互請(qǐng)求問(wèn)題
Feign是Netflix開(kāi)發(fā)的聲明式、模板化的HTTP客戶(hù)端,?Feign可以幫助我們更快捷、優(yōu)雅地實(shí)現(xiàn)微服務(wù)之間的調(diào)用,這篇文章主要介紹了SpringCloud?Feign實(shí)現(xiàn)微服務(wù)之間相互請(qǐng)求,需要的朋友可以參考下2022-06-06Java-web中利用RSA進(jìn)行加密解密操作的方法示例
這篇文章主要給大家介紹了關(guān)于在Java-web中利用RSA進(jìn)行加密解密操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08springSecurity之AuthenticationProvider用法解析
這篇文章主要介紹了springSecurity之AuthenticationProvider用法解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03