中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中的對象介紹

發布時間:2020-05-26 16:53:57 來源:億速云 閱讀:319 作者:鴿子 欄目:軟件技術

java中的對象介紹

劃分對象兩種方式:
指針碰撞:java內存空間規整的請款下使用
空閑列表:java內存空間不規整的請款下使用

java中的對象介紹

并發安全問題:頻繁創建對象就會存在線程不安全問題。解決方案有兩種:
1.對分配內存空間的操作進行同步處理,CAS加失敗重試機制保證保證更新操作原子性。
2.分配緩沖:給每個線程分配獨立空間(Java堆中申請一小塊私有內存),也就是本地線程分配緩沖(Tread Local Allocation Buffer,TLAB),開啟 -XX:+UseTLAB,在自己Buffer分配,空間不夠重新在Eden區申請一塊繼續使用。
TLAB可以讓每個應用線程擁有專屬的分配指針來分配空間(Eden區,默認Eden的1%),減小同步開銷。
TLAB只是讓每個線程有私有的分配指針,但底下存對象的內存空間還是給所有線程訪問的,只是其他線程無法在這個區域分配而已。當一個TLAB用滿(分配指針top撞上分配極限end了),重新申請一個TLAB.

對象內存布局

在HotSpot虛擬機中,對象的內存布局分為:對象頭(Header)、實例數據(Instance Data)和對齊填充(Padding)
對象頭分配兩部分,一是自身運行時數據(哈希嗎HashCode)、GC分帶年齡、鎖狀態標志、線程持有鎖、偏向線程ID、偏向時間戳等。
另一種類型指針,即只想它的類元素指針,虛擬機通過這個指針來確定是哪個類的實例
對齊填充起到占位符的作用。對象的大小必須是8個字節。實例數據7個字節 填充1個,1個填充7個。

對象的訪問方式

句柄:Java堆中劃分一塊內存作為句柄池,reference中存對象句柄地址,句柄中包含對象實例數據與類型數據各自的具體地址信息。
直接指針:reference直接存對象地址。
句柄的好處對象移動(垃圾回收移動對象)時只改變實例數據指針,而reference本身不需要修改。直接指針方式最大好處就是速度更快,減少指針定誒的時間開銷。對Sun HotSpot而言,它是使用直接指針訪問進行對象訪問的。
java中的對象介紹

內存分配策略

-XX:SurvivorRatio=8,表示Eden和Survivor的比值,缺省為8 表示Eden:From(Survivor):To(Survivor)=8:1:1
-XX:SurvivorRatio=2表示2:1:1
設置兩個Survivor區是為了解決碎片化的問題(復制回收算法)
java中的對象介紹

  1. 對象有現在Eden區分配
  2. 大對象直接進入老年代
  3. 長期存活的對象進入老年代
  4. 動態對象年齡判斷
  5. 空間分配擔保
    java中的對象介紹
    -Xms:20m 堆空間20m
    -Xmx:20m 堆最大空間20m
    -Xmn:10m 新生代(Eden區)10m
    -XX:+PrintGCDetails 打印GC日志
    -XX:+UseSeriolGC 一個垃圾回收器種類
    -XX:PretenureSizeThreshold=2m  超過2M的對象可以直接進入老年代

長期存活情況:
Eden區8m占滿,再分配1m對象,Eden區會發生MinGC.
存活對象進入from區,年齡+1,再來垃圾回收則進入to區,年齡再+1。
再次進行垃圾回收,對象返回from區,年齡再+1, from和to區反復,因為from和to區采用復制回收算法的原因。
年齡達到15歲,屬于長期存活對象,進入老年代。
動態對象年齡判斷:
from和to區年齡加起來是from年齡的一半,就可以提前晉級,進入老年代。

空間分配擔保:HandlePromotionFailure, 不用考慮老年代空間不夠,不用考慮發生FullGC,如果擔保失敗或內存不夠也會進行一次FullGC

FullGC:當老年代空間不足時候,有from或to區升級進入老年代的時候,將會執行FullGC

泛型

泛型擦除(為了實現)
弱記憶(版本的兼容)

java中的對象介紹

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

旺苍县| 准格尔旗| 翁牛特旗| 苗栗市| 宜丰县| 扎兰屯市| 临西县| 容城县| 民乐县| 昭觉县| 沂源县| 紫云| 清新县| 准格尔旗| 巴中市| 穆棱市| 延安市| 阿巴嘎旗| 西充县| 河西区| 南召县| 丹凤县| 嘉荫县| 吉安市| 石河子市| 博野县| 旌德县| 合川市| 台江县| 广汉市| 广宁县| 巨野县| 松江区| 涞源县| 梅州市| 桐乡市| 绥德县| 夏津县| 波密县| 金山区| 南充市|