氟塑料離心泵www.buybeng.com

          jquery教程http://www.software8.co/wzjs/jquery/

          我們愛面試,一面一學-----JAVA堆、棧

          爛俗的問題往往是最容易問到的問題,想必諸多面友都深有體會,因為我們和我們的面試官們都是俗人。但從另一方面來說,爛俗往往有著廣闊的延伸空間,一次次讓爛俗震驚你,不然于丹老師也就發不了財了。

                  言歸正傳,關于堆、棧真的很豐富、很值得研究。了解的不深,暫且按照個人的理解、思路來做筆記。

                 1---定義。堆、棧都是內存中的數據區,JVM用來存放程序中的數據,當然程序員是不可以直接操作這兩個區(都是由JVM操作的,包括new一個對象和垃圾對象回收)。

                  2---區別。(1):棧中的數據存取速度要比堆中的快許多,據說僅次于CPU中的寄存器(這是不重要的一條)。

                                     (2):棧中的數據是共享的(這點不重要,但是很麻煩,尤其是對理解String的存放重要)。

                                    (3):棧中的數據大小、生存周期必須是固定的(這點也不是很重要)。

                                    (4):棧中存放基礎類型變量(byte、short、int、long、float、double、boolean、char),堆中存放引用類型變量(類、數組、枚舉、接口)。這條是籠統、概述性質的,不完全正確。

          下面具體描述、解釋以上4條。

          第一條。關于存取速度,不是很重要,了解就可以,沒想到什么辦法可以測定一下。這個應該是對內存區的分配問題,沒能力詳細敘述了。

          第二條。棧中的數據是共享的。這種問題得舉例來說了。例如一段代碼

          1. int a = 1;  
          2. int b =1;  
          3. b = 2;  
          對于這段代碼,JVM的執行如下。首先在棧中開辟空間存放字面值1,然后將a指向1,也可以稱a為字面值1的引用。然后,定義變量b的時候,JVM會現在本函數的棧區域中搜索是否有字面值1,如果有,則將b指向1,而不需要再開辟空間存放1字面值。最后,當給b變量重新賦值的時候,JVM同樣在棧中搜索2字面值,如果找到,則將b指向這個字面值;如果沒找到則重新開辟空間存放2字面值。

          第三條。棧中的數據大小、生存周期都是已知的。如果在某個函數中聲明了基礎類型變量,則在函數調用結束的時候變量生存周期結束,即生存周期已知。

          第四條。關于什么類型的變量存放在哪時最常問的問題。首先8中基礎類型變量毫無疑問的會存放在棧中。其次自己定義的類對象也都會存放在堆中。最后有幾種比較特殊的變量需要詳細解釋。

          (1)String類型。首先,如果用String str = new String("asdf");來新建對象,會毫無疑問的存入堆中。但如果使用String str = "asdf",來聲明變量則會放入棧中,并遵守棧中數據共享的原則。例如以下代碼。

          1. String a = "abc";  
          2. String b = "abc";  
          3. b = "cde";  
          首先JVM在本函數的棧中開辟空間新建對象值為“abc”的字符串,并建立引用o指向abc,并在“abc”的內存地址旁記錄引用o。當聲明定義b字符串的時候,JVM首先在棧中搜索字符串“abc”,如果找到就返回引用o,并將o賦給新的b變量。最后給b字符串重新賦值的時候,也要在棧中搜索,如果沒找到則新建對象。

          (2)數組。因為數組是繼承了超類object,所以也要看做對象,即也要存放在堆中。

          (3)枚舉。同上。

          還需要澄清的一點是,當聲明、初始化了對象之后,對象的內容的確存放在了堆中,但對象的引用是存放在棧中的
          個人網站 www.software8.co

          posted on 2012-09-27 17:49 你爸是李剛 閱讀(1437) 評論(1)  編輯  收藏

          評論

          # re: 我們愛面試,一面一學-----JAVA堆、棧 2012-10-10 14:18 熱轉印

          這個可以有  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿

          隨筆檔案

          文章檔案

          技術網站

          行業網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          站長網 氟塑料離心泵 注塑機 液晶廣告機
          主站蜘蛛池模板: 金平| 仪陇县| 大田县| 华坪县| 东方市| 铁力市| 嘉义县| 项城市| 丹东市| 邵东县| 吕梁市| 内乡县| 贵州省| 阳原县| 丹东市| 青龙| 新宾| 黔西县| 揭东县| 松滋市| 板桥市| 水城县| 资溪县| 恩施市| 厦门市| 和顺县| 长子县| 张掖市| 怀化市| 桐乡市| 体育| 平利县| 吉林省| 宁南县| 永安市| 泽普县| 塘沽区| 韶关市| 武清区| 承德县| 兰溪市|