日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java对象在Java虚拟机的创建过程

發(fā)布時間:2024/2/28 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java对象在Java虚拟机的创建过程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

創(chuàng)建

1、相應(yīng)類加載檢查過程

Java程序中的“new”操作會轉(zhuǎn)換為Class文件中方法的“new”字節(jié)碼指令。
JVM(本文特指HotSpot)遇到new指令時,先檢查指令參數(shù)是否能在常量池中定位到一個類的符號引用:
A)、如果能定位到,檢查這個符號引用代表的類是否已被加載、解析和初始化過;
B)、如果不能定位到,或沒有檢查到,就先執(zhí)行相應(yīng)的類加載過程;

2.分配內(nèi)存

分配內(nèi)存有兩種方法。內(nèi)存大小在類加載時候已被確定。
a)指針碰撞:內(nèi)存分配事規(guī)整的,在內(nèi)存中,一邊是分配過的,一邊是沒有分配過的,中間是區(qū)分它們的指針,只需要這個指針向空閑空間那邊移動一段和對象大小相等的距離即可
b)空閑列表:內(nèi)存分配是不規(guī)整的,空閑片段和已分配片段交織一起,這是后,虛擬機需要維護一張空閑列表,每次對內(nèi)存的操作就是對表的修改操作。

3.線程安全問題

對象分配內(nèi)存在虛擬機是很常見的操作,所以在并發(fā)的情況下有可能出現(xiàn) “線程A給某個對象分配內(nèi)存移動指針,還沒來的及移動指針,線程B就使用了該指針” 的問題。處理方法也是有兩種。
a)同步處理:CAS加失敗重試的方式,這樣會影響到性能。
b)直接為每個線程分配一段固定大小的緩存。

4.初始化

分配完內(nèi)存之后,虛擬機會把分配到的內(nèi)存空間都會初始化為零值,保證了實例字段不被初始化就能使用,只是實例字段都是零值。

5.執(zhí)行對象實例方法

對象執(zhí)行了方法,按照程序員的想法初始化之后,一個真正可用的對象就產(chǎn)生了。
通常,經(jīng)過上面5步對象才完全new出來。

總結(jié)

以上是生活随笔為你收集整理的Java对象在Java虚拟机的创建过程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。