欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么解析Java性能優(yōu)化中的基本類型與引用類型

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)怎么解析Java性能優(yōu)化中的基本類型與引用類型,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

蕉城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

★名詞定義

先明確一下什么是“基本類型”,什么是“引用類型”。
簡單地說,所謂基本類型就是 Java 語言中如下的8種內(nèi)置類型:

boolean
char
byte
short
int
long
float
double

而引用類型就是那些可以通過 new 來創(chuàng)建對象的類型(基本上都是派生自 Object)。

★兩種類型的存儲方式

這兩種類型的差異,首先體現(xiàn)在存儲方式上。

◇引用類型的創(chuàng)建

當(dāng)你在函數(shù)中創(chuàng)建一個引用類型的對象時,比如下面這句:

StringBuffer str = new StringBuffer();

該 StringBuffer 【對象】的內(nèi)容是存儲在堆(Heap)上的,需要申請堆內(nèi)存。而變量 str 只不過是針對該 StringBuffer 對象的一個引用(或者叫地址)。變量 str 的【值】(也就是 StringBuffer 對象的地址)是存儲在【?!可系?。

◇基本類型的創(chuàng)建

當(dāng)你在【函數(shù)中}創(chuàng)建一個基本類型的變量時,比如下面這句:

int n = 123;

這個變量 n 的【值】也是存儲在棧(Stack)上的,但是這個語句不需要再從堆中申請內(nèi)存了。

為了更加形象,便于大伙兒理解,簡單畫了一個示意圖如下:

怎么解析Java性能優(yōu)化中的基本類型與引用類型

★堆和棧的性能差異

可能有同學(xué)會小聲問:堆和棧有啥區(qū)別捏?
要說堆和棧的差別,那可就大了去了。如果你對這兩個概念還是不太明白或者經(jīng)?;煜ㄗh先找本操作系統(tǒng)的書拜讀一下。
由于是介紹性能,所以來討論一下堆和棧在性能方面的差別(這個差異是很大滴)。堆相對進程來說是全局的,能夠被所有線程訪問;而棧是線程局部的,只能本線程訪問。打個比方,棧就好比個人小金庫,堆就好比國庫。你從個人小金庫拿錢去花,不需要辦什么手續(xù),拿了就花,但是錢數(shù)有限;而國庫里面的錢雖然很多,但是每次申請花錢要打報告、蓋圖章、辦 N 多手續(xù),耗時又費力。
同樣道理,由于堆是所有線程共有的,從堆里面申請內(nèi)存要進行相關(guān)的加鎖操作,因此申請堆內(nèi)存的復(fù)雜度和時間開銷比棧要大很多;從棧里面申請內(nèi)存,雖然又簡單又快,但是棧的大小有限,分配不了太多內(nèi)存。

★當(dāng)初為啥這樣設(shè)計?

可能有同學(xué)又問了,干嘛把兩種類型分開存儲,干嘛不放到一起捏?這個問題問得好!下面我們就來揣測一下,當(dāng)初 Java 為啥設(shè)計成這樣。
當(dāng)年 Java 它爹( James Gosling )設(shè)計語言的時候,對于這個問題有點進退兩難。如果把各種東東都放置到棧中,顯然不現(xiàn)實,一來棧是線程私有的(不便于共享),二來棧的大小是有限的,三來棧的結(jié)構(gòu)也間接限制了它的用途。那為啥不把各種東東都放置到堆里面捏?都放堆里面,倒是能繞過上述問題,但是剛才也提到了,申請堆內(nèi)存要辦很多手續(xù),太繁瑣。如果僅僅在函數(shù)中寫一個簡單的“int n = 0;”,也要到堆里面去分配內(nèi)存,那性能就大大滴差了(要知道 Java 是1995年生出來的,那年頭俺買了臺 PC 配【4兆內(nèi)存】就屬豪華配置了)。
左思右想之后,Java 它爹只好做了一個折中:把類型分為“基本類型”和“引用類型”,兩者使用不同的創(chuàng)建方式。這種差異從 Java 語法上也可以看出來:引用類型總是用 new 創(chuàng)建對象(提醒一下:某些單鍵對象/單例對象,表面上沒用 new,但是在 getInstance() 內(nèi)部也還是用 new 創(chuàng)建的);而基本類型則【不需要】用 new 來創(chuàng)建。

★這樣設(shè)計的弊端

順便跑題一下,斗膽評價 Java 它爹這種設(shè)計的弊端(希望 Java Fans 不要跟我急)。我個人認(rèn)為:這個折中的決策,帶來了許多深遠的影響,隨手舉出幾個例子:
1、由于基本類型不是派生自 Object,因此不能算是純種的對象。這導(dǎo)致了 Java 的“【純】面向?qū)ο蟆闭信拼蛄苏劭郏ó?dāng)年 Sun 老是吹噓 Java 是“純”O(jiān)O 的語言,其實 Java 的 OO 是不夠純粹滴)。
2、由于基本類型不是派生自 Object,出于某些場合(比如容器類)的考慮,不得不為每個基本類型加上對應(yīng)的包裝類(比如 Integer、Byte 等),使得語言變得有點冗余。

從上述的介紹,我們應(yīng)該明白,使用 new 創(chuàng)建對象的開銷是【不小】的。在程序中能避免就應(yīng)該盡量避免。另外,使用 new 創(chuàng)建對象,不光是創(chuàng)建時開銷大,將來垃圾回收時,銷毀對象也是有開銷的

上述就是小編為大家分享的怎么解析Java性能優(yōu)化中的基本類型與引用類型了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:怎么解析Java性能優(yōu)化中的基本類型與引用類型
URL地址:http://aaarwkj.com/article8/peicop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、電子商務(wù)、動態(tài)網(wǎng)站、微信公眾號、網(wǎng)頁設(shè)計公司、響應(yīng)式網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
av电影网站中文字幕| 免费在线观看欧美色妇| 精品国产乱码久久蜜桃| 色吊丝二区三区中文字幕| 香蕉久草官网视频观看| 精品视频偷拍一区二区三区| 日韩av综合色区人妻| 国产精品国产自产拍高清 | 高h视频在线播放观看| 天堂中文在线官网在线| 极品美女被插到高潮喷水| 日本在线一区二区不卡视频| av在线中文字幕剧情| 国产日韩久久免费电影| 中文字幕成人资源网站| 又黄又爽又刺激的性视频 | 青青草原天堂在线免费观看| 亚洲av成人精品网站推荐| 欧美精品国产亚洲另类| 亚洲各类熟女们中文字幕| 欧美日韩电影一区二区三区| 毛片一区二区三区免费看| 久久伊人这里都是精品| 国产精品v一区二区三区| 粉嫩极品美女国产精品| 中文字幕av不卡一区| 麻豆精品人妻中文在线| 免费不卡无码毛片观看| 91在线视频欧美国产| 国产精品偷伦一区二区| av天堂中文一区二区三区| 国产高清毛片区1区二区三区| 国产性色精品一区二区| 六月丁香花五月婷婷| 日本 午夜 在线 视频| 国产黄色一区二区三区| 国产一区二区三区百合| 99久久精品国产国产毛片| 久久超碰一区二区三区| 亚洲国产欧美日韩在线不卡成人 | 日本在线一区二区视频麻豆|