日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java中堆和棧的概念和區別

瀏覽:171日期:2022-08-30 18:54:11

當一個人開始學習Java或者其他編程語言的時候,會接觸到堆和棧,由于一開始沒有明確清晰的說明解釋,很多人會產生很多疑問,什么是堆,什么是棧,堆和棧有什么區別?更糟糕的是,Java中存在棧這樣一個后進先出(Last In First Out)的順序的數據結構,這就是java.util.Stack。這種情況下,不免讓很多人更加費解前面的問題。事實上,堆和棧都是內存中的一部分,有著不同的作用,而且一個程序需要在這片區域上分配內存。眾所周知,所有的Java程序都運行在JVM虛擬機內部,我們這里介紹的自然是JVM(虛擬)內存中的堆和棧。

1. Java的堆是一個運行時數據區,類的對象從堆中分配空間。這些對象通過new等指令建立,通過垃圾回收器來銷毀。2. 堆的優勢是可以動態地分配內存空間,需要多少內存空間不必事先告訴編譯器,因為它是在運行時動態分配的。但缺點是,由于需要在運行時動態分配內存,所以存取速度較慢。

1. 棧中主要存放一些基本數據類型的變量(byte,short,int,long,float,double,boolean,char)和對象的引用。2. 棧的優勢是,存取速度比堆快,棧數據可以共享。但缺點是,存放在棧中的數據占用多少內存空間需要在編譯時確定下來,缺乏靈活性。

舉例說明棧數據可以共享

String 可以用以下兩種方式來創建:

第一種使用new來創建的對象,它存放在堆中。每調用一次就創建一個新的對象。

第二種是先在棧中創建對象的引用str2,然后查找棧中有沒有存放“abc”,如果沒有,則將“abc”存放進棧,并將str2指向“abc”,如果已經有“abc”, 則直接將str2指向“abc”。

下面用代碼說明上面的理論:

public static void main(String[] args) {String str1 = new String('abc');String str2 = new String('abc');System.out.println(str1 == str2); }

輸出結果為:false

public static void main(String[] args) {String str1 = 'abc';String str2 = 'abc';System.out.println(str1 == str2); }

輸出結果為:true

因此,用第二種方式創建多個“abc”字符串,在內存中其實只存在一個對象而已。這種寫法有利于節省內存空間。同時還可以提高程序的運行速度,因為JVM會自動根據棧中數據的實際情況來決定是否創建新對象。

String str1 = new String('abc');String str2 = 'abc';

附錄:Java中的堆和棧的區別

java中堆和棧的區別自然是面試中的常見問題,下面幾點就是其具體的區別

各司其職

最主要的區別就是棧內存用來存儲局部變量和方法調用。而堆內存用來存儲Java中的對象。無論是成員變量,局部變量,還是類變量,它們指向的對象都存儲在堆內存中。

獨有還是共享

棧內存歸屬于單個線程,每個線程都會有一個棧內存,其存儲的變量只能在其所屬線程中可見,即棧內存可以理解成線程的私有內存。而堆內存中的對象對所有線程可見。堆內存中的對象可以被所有線程訪問。

異常錯誤

如果棧內存沒有可用的空間存儲方法調用和局部變量,JVM會拋出java.lang.StackOverFlowError。而如果是堆內存沒有可用的空間存儲生成的對象,JVM會拋出java.lang.OutOfMemoryError。

空間大小

棧的內存要遠遠小于堆內存,如果你使用遞歸的話,那么你的棧很快就會充滿。如果遞歸沒有及時跳出,很可能發生StackOverFlowError問題。你可以通過-Xss選項設置棧內存的大小。-Xms選項可以設置堆的開始時的大小,-Xmx選項可以設置堆的最大值。

這就是Java中堆和棧的區別。理解好這個問題的話,可以對你解決開發中的問題,分析堆內存和棧內存使用,甚至性能調優都有幫助。

查看默認值(Updated)

查看堆的默認值,使用下面的代碼,其中InitialHeapSize為最開始的堆的大小,MaxHeapSize為堆的最大值。

13:17 $ java -XX:+PrintFlagsFinal -version | grep HeapSize uintx ErgoHeapSizeLimit = 0 {product} uintx HeapSizePerGCThread = 87241520 {product} uintx InitialHeapSize := 134217728 {product} uintx LargePageHeapSizeThreshold = 134217728 {product} uintx MaxHeapSize := 2147483648 {product}java version '1.8.0_25'Java(TM) SE Runtime Environment (build 1.8.0_25-b17)Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

查看棧的默認值,其中ThreadStackSize為棧內存的大小。

13:21 $ java -XX:+PrintFlagsFinal -version | grep ThreadStackSize intx CompilerThreadStackSize = 0 {pd product} intx ThreadStackSize = 1024 {pd product} intx VMThreadStackSize = 1024 {pd product}java version '1.8.0_25'Java(TM) SE Runtime Environment (build 1.8.0_25-b17)Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

總結

到此這篇關于Java中堆和棧的概念和區別的文章就介紹到這了,更多相關java 堆和棧的概念和區別內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
天堂成人免费av电影一区 | 日韩影院免费视频| 日韩欧美美女在线观看| 国产成人精品三级高清久久91| 日韩久久精品| 日韩亚洲精品在线观看| 欧美sss在线视频| 日本不卡一二三区黄网| 亚洲美女久久精品| 日韩专区视频网站| 香蕉精品久久| 亚洲免费福利| 久久99久久久精品欧美| 影院欧美亚洲| 日韩电影在线视频| 精品国产亚洲一区二区三区| 日韩一区二区三区精品| 伊人影院久久| 久久久精品久久久久久96 | 久久aⅴ国产紧身牛仔裤| 精品国产一区二区三区性色av| 欧美成人日韩| 四虎8848精品成人免费网站| 国产精品久久国产愉拍| 日韩福利在线观看| 蜜桃久久av一区| 亚洲区第一页| 日韩在线麻豆| 日韩毛片一区| 国产欧美欧美| 福利一区视频| 中文字幕成在线观看| 欧美不卡高清一区二区三区| 久久精品网址| 日产精品一区二区| 夜鲁夜鲁夜鲁视频在线播放| 97精品中文字幕| 成人va天堂| 99国产精品99久久久久久粉嫩| 黄色日韩在线| 日韩不卡一二三区| 国产精品一区二区美女视频免费看 | 日本h片久久| 国产精品毛片aⅴ一区二区三区| 你懂的网址国产 欧美| 国产精品一区亚洲| 在线手机中文字幕| 亚洲久草在线| 国产精品成久久久久| 精品中文一区| 老司机免费视频一区二区| 群体交乱之放荡娇妻一区二区| 伊人久久亚洲美女图片| 久久国产三级| 91精品99| 欧美国产三级| 亚洲一区欧美激情| 精品久久在线| 日本亚洲最大的色成网站www | 日韩精品一区二区三区中文字幕| 国产精品自拍区| 波多野结衣一区| 国产精品久久久一区二区| 欧美jjzz| 欧美日韩尤物久久| 国产精品白丝久久av网站 | 成人午夜在线| 日韩激情av在线| 久久xxxx| 亚洲女同中文字幕| 国产一区二区三区免费在线 | 欧美精品一卡| 日韩在线第七页| 免费一级欧美在线观看视频| 视频一区在线视频| 午夜在线一区二区| 久久精品国语| 深夜视频一区二区| 亚洲天堂资源| av在线最新| 色综合五月天| 国产欧美一区二区三区精品酒店| 久久天堂影院| 久久精品国产亚洲aⅴ| 亚洲精品一二| 日韩欧美中文字幕在线视频| 视频一区国产视频| 免播放器亚洲| 亚洲免费资源| 国产精品成人自拍| 精品国产午夜| 激情久久久久久| 亚洲欧美日韩国产一区| 午夜在线精品| 国产精品99精品一区二区三区∴| 国产精品一国产精品k频道56| 久久99性xxx老妇胖精品| 国产亚洲一区二区三区啪| 欧美久久一区二区三区| 久久精品国产一区二区| 五月激情久久| 亚洲欧美专区| 国产成人精品三级高清久久91| 久久久久久久久丰满| 午夜国产精品视频免费体验区| 免费观看久久久4p| 欧美91在线|欧美| 精品一区欧美| 免费在线观看一区| 久久午夜影视| 欧美男人天堂| 日本免费一区二区视频| 日本蜜桃在线观看视频| 欧美日韩国产免费观看| 婷婷精品在线| 色婷婷精品视频| 国产美女久久| 日韩精品一级中文字幕精品视频免费观看 | 欧美国产偷国产精品三区| 99国产一区| 国产h片在线观看| 亚洲涩涩av| 婷婷成人综合| 国产精品毛片久久| 日韩有码av| 乱人伦精品视频在线观看| 精品三区视频| 免费在线欧美黄色| 一区二区三区午夜视频| 精品一区二区三区的国产在线观看| 悠悠资源网久久精品| 亚洲1234区| 国产传媒在线| 久久精品亚洲一区二区| 国产精品欧美一区二区三区不卡| 在线亚洲成人| 久久精品国产68国产精品亚洲| 美女在线视频一区| 麻豆精品国产91久久久久久| 日韩高清在线一区| 亚州av一区| 四虎在线精品| 国产女人18毛片水真多18精品| 亚洲精品精选| 日韩av不卡在线观看| 日韩精品91亚洲二区在线观看| 午夜在线视频观看日韩17c| 好吊日精品视频| 久久夜色精品| 亚洲tv在线| 国产精品免费精品自在线观看| 日韩三级久久| 久久精品国内一区二区三区| 亚洲人成在线网站| 欧美在线亚洲综合一区| 免费在线看一区| 日本午夜精品视频在线观看| 国产精品v亚洲精品v日韩精品| 国产第一亚洲| 一级欧洲+日本+国产| 婷婷精品在线观看| 久久香蕉精品香蕉| 91精品国产福利在线观看麻豆| 99pao成人国产永久免费视频| 日韩精品免费视频人成| 久久精品国产精品亚洲毛片| 激情综合五月| 国产免费成人| 精品视频在线观看网站| 久久在线电影| 国产精品一区二区av交换| 日韩国产一区| 婷婷视频一区二区三区| 日本少妇一区| 日韩av资源网| 尹人成人综合网| av综合电影网站| 青草国产精品久久久久久| 国产 日韩 欧美一区| 久久精品xxxxx| 好看的亚洲午夜视频在线| 亚洲影视一区二区三区| 成人亚洲欧美| 嫩草伊人久久精品少妇av杨幂| 亚洲一区二区网站| 久久久精品五月天| 国产精品99久久免费| 乱人伦精品视频在线观看| jizzjizz中国精品麻豆| 国产伦一区二区三区| 日本一区二区三区视频在线看| 亚洲h色精品| 日韩电影免费网站| 深夜福利视频一区二区| 精品香蕉视频| 福利一区视频| 老司机精品视频网| 国产一区二区三区探花| 久久99国产精品视频| 国产精品亚洲二区|