<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 如何計算對象大小 1. 搞清楚Java對象的布局結構 2. 借助`jol-core`包來打印對象 3. 引用的指針壓縮 ## 對象布局 ![](https://img.kancloud.cn/ce/c1/cec1a91e96673b1c679c0b6562b621f8_1938x1098.png) ## Java對象布局(Java Object Layout) ### String對象例子 ![](https://img.kancloud.cn/5e/35/5e356e34a9e40ad15625d059b97b2a4b_3664x844.png) ### int[]數組對象例子 ![](https://img.kancloud.cn/04/21/042133c524d818fb5327b9647c812b7b_3716x1484.png) ## 引用的指針壓縮 ### JVM內存尋址最大內存是多少? ~~~ // 打印jvm的詳細信息 System.out.println(VM.current().details()); ~~~ ``` # Running 64-bit HotSpot VM. // 64位hotSpot虛擬機 # Using compressed oop with 3-bit shift. // 對象壓縮 3位無符號右移 # Using compressed klass with 3-bit shift. // 類型指針壓縮 3為無符號右移 # Objects are 8 bytes aligned. // 對象按8字節對齊 ``` 對象按8字節對齊,且jvm的引用占4個字節,能表示2^32=4G * 8 = 32G的物理內存。 ![](https://img.kancloud.cn/63/af/63afe676ba86ed88ec44e989693c5337_1780x758.png) ### 不啟用指針壓縮 采用8字節(64位)存儲真實內存地址,比之前采用4字節(32位)壓縮存儲地址帶來的問題: 1. 增加了GC開銷:64位對象引用需要占用更多的堆空間,留給其他數據的空間將會減少,從而加快了GC的發生,更頻繁的進行GC。 2. 降低CPU緩存命中率:64位對象引用增大了,CPU能緩存的oop將會更少,從而降低了CPU緩存的效率。 ### 啟用指針壓縮 * `-XX:+UseCompressedOops` 開啟指針壓縮,jdk6之后默認開啟。 * `-XX:+PrintFlagsFinal` 打印jvm參數,可以用來驗證檢查環境內的參數配置生效情況。 * 內存大于32GB時,開啟指針壓縮的參數會失效! ## 總結 對象大小 = 對象頭字節 + 實例數據字節 + 填充字節 ## 參考資料 * 周志明 * 《深入理解Java虛擬機》
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看