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

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

Java中堆和棧的概念和區別

瀏覽:167日期: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欧美国产| 国产亚洲精品v| 亚洲美女久久| 狠狠久久伊人| 亚洲深夜av| 你懂的国产精品永久在线| 亚洲精品88| 蜜桃久久av一区| 欧美成人一二区| 国产高清久久| 国产日韩在线观看视频| 日韩中文首页| 在线一区二区三区视频| 狂野欧美性猛交xxxx| 亚洲高清毛片| 国产日韩亚洲欧美精品| 91精品精品| 国产欧美视频在线| 国产在线成人| 国产伦理一区| 日韩在线精品| 日韩福利视频网| 国户精品久久久久久久久久久不卡| 亚州av一区| 激情婷婷欧美| 国产精品嫩草影院在线看| 999久久久91| 国产精品久久久免费| 亚洲综合日韩| 国产v日韩v欧美v| 日本一区免费网站| 欧美日韩免费观看视频| 97成人在线| 一区久久精品| 欧美激情另类| 日韩三级一区| 1024精品久久久久久久久| 麻豆成人91精品二区三区| 亚洲精品高潮| 九一成人免费视频| 超碰成人av| 国产精品一区二区三区av麻| 亚洲伊人影院| 国产偷自视频区视频一区二区| 日韩精品第一区| 国产黄色一区| 日韩av一区二区在线影视| 美女被久久久| 最新国产拍偷乱拍精品| av综合电影网站| 国产亚洲一卡2卡3卡4卡新区| 黄色成人在线网址| 中文字幕在线免费观看视频| 国产精品久久久久av蜜臀| 日韩精品乱码av一区二区| 在线综合欧美| 欧美在线网站| 亚洲国产一区二区在线观看| 偷拍精品精品一区二区三区| 久久99久久人婷婷精品综合| 日韩国产一二三区| 亚洲tv在线| 亚洲资源在线| 亚洲精品第一| 蜜桃视频一区二区| 国产精品毛片| 欧美特黄一级| 亚洲午夜av| 国产在线欧美| 91精品91| 亚洲精华国产欧美| 欧美午夜不卡| 亚洲综合二区| 亚洲人成精品久久久| 亚洲精品成a人ⅴ香蕉片| 亚洲一级大片| 91精品在线免费视频| 久久国内精品视频| 国产精品一区二区精品| 国产激情久久| 精品在线网站观看| 精品国产一区二| 精品中文在线| 色在线视频观看| 久久久久国产一区二区| 久久精品1区| 最新亚洲激情| 亚洲精品综合| 国产精品手机在线播放| 精品久久久网| 久久久久久黄| 五月天久久网站| 丝袜a∨在线一区二区三区不卡| 石原莉奈在线亚洲三区| 亚洲v天堂v手机在线| 日本一区免费网站| 国产精品jk白丝蜜臀av小说| 国产一区二区三区久久久久久久久| 精品国产欧美日韩| 亚洲www免费| 性色一区二区| 69堂精品视频在线播放| 精品午夜av| 欧美日韩国产欧| 日本精品久久| 亚洲天堂av影院| 性色一区二区| 国产精品对白| 久久九九99| 亚洲毛片在线| 国产精品99视频| 伊人影院久久| 欧美一区不卡| 日韩视频网站在线观看| 日本大胆欧美人术艺术动态| 国产精品一区二区免费福利视频 | 久久午夜精品| 国产精品伦一区二区| 神马午夜在线视频| 中文不卡在线| 国产成人免费| 黑丝一区二区三区| 欧美日韩一区二区三区在线电影| 久久麻豆视频| 亚洲激情五月| 欧美aa在线视频| 亚洲一区二区动漫| 九九九精品视频| 麻豆精品网站| 国内自拍视频一区二区三区| 在线亚洲免费| 精品一区91| 热久久久久久久| 日韩中文影院| 国产麻豆一区二区三区| 伊人精品一区| 国产精品www.| 欧美日韩在线网站| 国产日韩一区二区三免费高清| 一区二区小说| 欧美a一区二区| 男人的天堂亚洲一区| 国产精品精品| 国产一区 二区| 首页欧美精品中文字幕| 久久uomeier| 欧美在线黄色| 午夜精品婷婷| 日本а中文在线天堂| 日韩av黄色在线| 欧美日韩国产欧| 国产精品原创| 日韩一区精品| av不卡免费看| 欧洲一区二区三区精品| 国产日产精品一区二区三区四区的观看方式| 99久久九九| 精品香蕉视频| 国产免费av一区二区三区| 久久xxxx| 激情欧美一区二区三区| 中国字幕a在线看韩国电影| 国产探花一区在线观看| 最新国产精品| 快she精品国产999| 91成人精品视频| 午夜精品久久久久久久久久蜜桃| 久久国产欧美日韩精品| 蜜臀av一区二区三区| 欧美日韩国产在线观看网站 | 免费人成在线不卡| 1000部精品久久久久久久久| 日韩1区2区| 精品成人18| 麻豆视频一区| 欧美精品aa| 国产精品中文字幕制服诱惑| 在线观看一区| 免费久久99精品国产| 黄色日韩在线| 黑丝一区二区三区| 亚洲少妇一区| 免费一区二区视频| 中文字幕日本一区二区|