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

怎么解析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è)
国产一级二级三级久久| 日本欧美一区二区二区视频免费| 特色特色欧美黄色影院| 欧美亚洲综合另类色妞| 国产视频一区二区三区网| 中午字幕久久亚洲精品| 国产中文精品字幕a区| 久久精品人妻麻豆尤物| 国产一边打电话一边操| 国产av无毛一区二区三区| 国产精致成人免费视频| 91精品国产自产永久在线| 91麻豆精品国产久久久| 中文字幕乱码人妻一区| 国产亚洲精品美女视频| 午夜影院在线观看网站| 97视频网站在线观看| av天堂午夜在线观看| 亚洲天堂国产成人精品| 福利午夜福利在线观看| 欧美黄片不用下载在线观看| 日韩午夜免费一区二区蜜桃| 国内一级黄色片免费观看| 久久婷亚洲综合五月天| 一区二区先锋深夜中文字幕| 日韩在线视频一区二区三| 久久五十路初次拍五十路| 欧美一区二区三区中文字幕| 日本乱码中文字幕在线观看| 91国产性感美女视频| 国产精品久久99粉嫩| 日本韩国欧美成人精品| 欧美大片免费在线播放| 国产欧美日韩精品三级| 亚洲欧洲精品真人av蜜臀| 国产精品白丝一区二区三区| 国产成人在线观看av| 青青草成人公开在线视频| 日韩不卡免费一区二区三区视频| 东京热一区二区电影| 久久精品国产亚洲夜色av网站|