java int integer内存_java中一个integer对象的内存占用是多少?可以通过java方法输出吗?...
今天翻記錄看到了自己15年3月份提的問題,現在已經18年6月份了;
去年線上項目出現內存瓶頸,原因是緩存的玩家角色數據過多,在長時間不停服的情況下,導致數據越來越膨脹,之前沒有清除無用緩存的機制,并且緩存數目上限過高;
期間組里進行了一次內存大小計算學習;
各個Java對象自身占用的堆大小都可以通過對象的數據結構計算得出;
且最終的計算結果與jmap查看的單個對象大小一致;通過jmap查看內存對象,每個Long和Integer占用內存24字節,這24字節分別都是什么東西??www.zhihu.com
--------------------------
通過內存計算對Java對象的內存分布可以有個更加清晰的認識;
1.比如一個對象當中如果有數組對象,比如java.util.ArrayList對象,有個數組對象private transient Object[] elementData對象,那么在64位系統未開啟指針壓縮的情況下至少有一個8字節的指針引用消耗,以及數組對象本身的消耗,比如對象大小初始化為10,數組本身的對象消耗將為8字節的makrword + 8字節的class指針 + 8字節的數組長度 + 10 * 8 字節的數組引用指針消耗;
那么你個空的為10大小的數組消耗為8 + 8 + 8 + 10 * 8 = 104字節 正好對齊了;
再加上本身ArrayList對象的對象頭 (8字節MarkWord+ 8字節的class指針)+ 4字節的size成員變量 + 8字節的數組對象指針消耗 + 4字節的modCount成員變量 = 32字節
那么一共將是 32 + 104 = 140字節
------------------------
甚至我們在計算一個內部類的大小的時候會發現內部類除了那些顯示的內存占用外,還將保存一個父類的引用,因為會多出8字節來。
總結
以上是生活随笔為你收集整理的java int integer内存_java中一个integer对象的内存占用是多少?可以通过java方法输出吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 类 null_深入理解java
- 下一篇: 最配水瓶座的三大星座(水瓶座的最佳星座配