麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

詳解JVM的內存對象介紹[創建和訪問]

2024-07-14 08:43:42
字體:
來源:轉載
供稿:網友

作為java程序員對應Object應該是非常熟悉的,但是對于對象在JVM中的一些情況并不是很清楚,所以本文就來記錄下對象在JVM中的一些內容

對象的創建

java程序中創建對象的常用方式是:

Object obj = new Object();

該行代碼的執行過程如下:


JVM,內存對象

從圖中我們可以發現對象創建的步驟如下

  1. 執行new執行
  2. 檢查這個指令參數是否能夠在常量池中定位到一個類的符號引用,并且檢查這個符號引用所代表的類是否已經被加載,解析和初始化。
  3. 如果該類沒有被加載則先執行類的加載操作
  4. 如果該類已經被加載,則開始給該對象在jvm的堆中分配內存。分配規則后面介紹
  5. 虛擬機初始化操作,虛擬機對分配的空間初始化為零值。
  6. 執行init方法,初始化對象的屬性,至此對象被創建完成。
  7. java虛擬機棧中的Reference執行我們剛剛創建的對象。

在上面的過程中的類加載的過程,后面會單獨介紹,而內存分配這塊我們來介紹下

內存的分配原則

內存分配的基本原則:

 

序號 介紹
1 優先在Eden分配,如果Eden空間不足虛擬機則會進行一次MinorGC
2 大對象直接接入老年代,很長的字符串或數組
3 長期存活的對象進入老年代,每個對象都有一個age,當age到達設定的年齡的時候就會進入老年代,默認是15歲

 

 

內存的分配方法

內存分配的方法有兩種:指針碰撞(Bump the Pointer)和空閑列表(Free List)

 

分配方法 說明 收集器
指針碰撞 內存地址是連續的 Serial和ParNew收集器
空閑列表 內存地址不連續 CMS收集器和Mark-Sweep收集器

內存分配的安全問題

在分配內存的同時,存在線程安全的問題,即虛擬機給A線程分配內存過程中,指針未修改,B線程可能同時使用了同樣一塊內存。
在JVM中有兩種解決辦法:

  1. 同步處理,即CAS(compare & swap)搭配失敗重試的方式
  2. 將內存分配的動作按線程分配到不同空間中,每個線程都有一小塊內存,成為本地線程分配緩沖(Thread Local Allocation Buffer即TLAB)。

對象的訪問定位

建立對象是為了使用對象,java程序是通過棧上的reference數量來操作堆上的具體的對象,具體操作對象的方式有兩種:

1.通過句柄訪問對象

JVM,內存對象

2.通過直接指針訪問對象

JVM,內存對象

兩種方式的比較

 

方式 優點
句柄 穩定,對象被移動只要修改句柄中的地址
直接指針 訪問速度快,節省了一次指針定位的開銷

 

以上所述是小編給大家介紹的JVM的內存對象介紹[創建和訪問]詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美精品一区二区中文字幕 | 国产做爰| 精品久久久久久成人av | 黄网站免费在线看 | 免费国产一区二区视频 | 99精品视频在线免费观看 | 九一国产精品 | 国产成人精品一区二区三区电影 | 免费一级毛片免费播放 | 久久不射电影网 | 日日狠狠久久偷偷四色综合免费 | 国产毛片毛片毛片 | 素人视频免费观看 | 一级一级一级一级毛片 | 欧美自拍三区 | 91精品国产92久久久久 | 色网站综合 | 九九热精品免费 | 国产成人精品一区二区视频免费 | 国产91久久久 | 石原莉奈日韩一区二区三区 | av资源在线天堂 | 色域tv | 国产电影av在线 | 激情在线视频 | 蜜桃视频在线免费观看 | 91网站链接| 成人在线激情视频 | 亚洲国产精品一区二区精品 | 精品久久久久99 | 激情小说激情图片激情电影 | 日韩精品中文字幕在线观看 | jizzzzxxxxx| 逼特逼视频在线观看 | 一区二区久久精品66国产精品 | 久久99精品久久久久久秒播放器 | 免费a网 | 99精品视频一区二区三区 | 成人在线视频精品 | 久久成年人视频 | 国产成人精品免费视频大全办公室 |