• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦>生活課堂>生活小常識>

    java堆與棧的區別

    時間: 志峰887 分享

      java堆與棧相信很多人都會混淆,那么應該怎樣去區分呢?下面是學習啦小編為大家準備的java堆與棧的區別,希望大家喜歡!

      java堆與棧的區別

      各司其職

      最主要的區別就是棧內存用來存儲局部變量和方法調用。

      而堆內存用來存儲Java中的對象。無論是成員變量,局部變量,還是類變量,它們指向的對象都存儲在堆內存中。

      獨有還是共享

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

      而堆內存中的對象對所有線程可見。堆內存中的對象可以被所有線程訪問。

      異常錯誤

      如果棧內存沒有可用的空間存儲方法調用和局部變量,JVM會拋出java.lang.StackOverFlowError。

      而如果是堆內存沒有可用的空間存儲生成的對象,JVM會拋出java.lang.OutOfMemoryError。

      空間大小

      棧的內存要遠遠小于堆內存,如果你使用遞歸的話,那么你的棧很快就會充滿。如果遞歸沒有及時跳出,很可能發生StackOverFlowError問題。

      你可以通過-Xss選項設置棧內存的大小。-Xms選項可以設置堆的開始時的大小,-Xmx選項可以設置堆的最大值。

      java堆與棧相關閱讀

      棧與堆都是Java用來在Ram中存放數據的地方。與C++不同,Java自動管理棧和堆,程序員不能直接地設置棧或堆。

      Java的堆是一個運行時數據區,類的對象從中分配空間。這些對象通過new、newarray、anewarray和 multianewarray等指令建立,它們不需要程序代碼來顯式的釋放。堆是由垃圾回收來負責的,堆的優勢是可以動態地分配內存大小,生存期也不必事 先告訴編譯器,因為它是在運行時動態分配內存的,Java的垃圾收集器會自動收走這些不再使用的數據。但缺點是,由于要在運行時動態分配內存,存取速度較 慢。

      棧的優勢是,存取速度比堆要快,僅次于寄存器,棧數據可以共享。但缺點是,存在棧中的數據大小與生存期必須是確定的,缺乏靈活性。

      棧中主要存放一些基本類型的變量(,int, short, long, byte, float, double, boolean, char)和對象句柄。

      棧有一個很重要的特殊性,就是存在棧中的數據可以共享。假設我們同時定義:

      int a = 3;

      int b = 3;

      編譯器先處理int a = 3;首先它會在棧中創建一個變量為a的引用,然后查找棧中是否有3這個值,如果沒找到,就將3存放進來,然后將a指向3。接著處理int b = 3;在創建完b的引用變量后,因為在棧中已經有3這個值,便將b直接指向3。這樣,就出現了a與b同時均指向3的情況。

      這時,如果再令a=4;那么編譯器會重新搜索棧中是否有4值,如果沒有,則將4存放進來,并令a指向4;如果已經有了,則直接將a指向這個地址。因此a值的改變不會影響到b的值。

      要注意這種數據的共享與兩個對象的引用同時指向一個對象的這種共享是不同的,因為這種情況a的修改并不會影響到b, 它是由編譯器完成的,它有利于節省空間。而一個對象引用變量修改了這個對象的內部狀態,會影響到另一個對象引用變量。

    1721130 主站蜘蛛池模板: 无码专区久久综合久中文字幕| 国产男女猛烈无遮挡免费网站| 国产激情精品一区二区三区| 亚洲激情视频网站| 午夜夜伦鲁鲁片| 亚洲国产婷婷综合在线精品| 中文字幕成人精品久久不卡| 337p欧美日本超大胆艺术裸| 老子影院午夜伦不卡| 蕾丝视频在线看片国产| 欧美牲交a欧美牲交aⅴ免费下载| 无码人妻av一二区二区三区| 国产产一区二区三区久久毛片国语| 亚洲福利在线看| 三级黄色在线免费观看| 日韩色图在线观看| 蜜臀精品国产高清在线观看| 日本一卡二卡≡卡四卡精品| 国产精品成人va在线观看| 北条麻妃国产九九九精品视频| 久久精品国产999大香线焦| 97麻豆精品国产自产在线观看| 老师让我她我爽了好久动漫| 成人区视频爽爽爽爽爽| 国产对白受不了了| 免费一级国产大片| 中文字幕在线观看亚洲| 精品视频一区二区三区在线观看| 日本韩国三级在线| 国产精品91在线播放| 亚洲激情视频图片| 热久久这里是精品6免费观看| 狠狠97人人婷婷五月| 性色av闺蜜一区二区三区| 国产卡1卡2卡三卡在线| 亚洲国产成人久久综合区| 国产精品久久久久久麻豆一区| 欧美人与动人物姣配xxxx| 在线播放亚洲精品| 免费A级毛片AV无码| 6080新觉伦|