posts - 30,  comments - 28,  trackbacks - 0

          Stack 和Heap的差別,上次華為研究生筆試題就考過。C語言的我很清楚:
          ?Stack: automatic variables within functions
          ? Heap: global variables (storage class external), and static variables

          簡而言之,最大的不同是:前者是函數(shù)變量的空間,后者是程序變量的空間

          另外,Stack上分配內(nèi)存是安全的。而Heap上分配內(nèi)存則沒那么爽了。調(diào)用malloc分配內(nèi)存,是在Heap上開辟空間。一定要注意釋放。否則老是memory leak
          ?
          昨天有人問我JVM中的Stack和Heap的差別,當(dāng)時(shí)心不在焉地照搬C語言敷衍了事。
          中午起床,沒事閑著看帖子。無意中想起這個(gè)問題,在Google搜索了一番。發(fā)現(xiàn)昨天的回答出了問題:
          “?It is useful to know that these two different kinds of memory exist in Java. Stack memory is the program's memory, and heap memory resides outside of the program.”

          Stack是程序內(nèi)存,Heap內(nèi)存存在于程序之外。這樣子看起來和C語言中地Heap有些像誒(C語言中的Heap也是在mian()之外的)。再仔細(xì)看看

          Stack memory stores primitive types and the addresses of objects. The object values are stored in heap memory.

          類實(shí)例存在于Heap。類實(shí)例的的指針在Stack中存放。難怪JVM沒有text segment ,在Stack就囊括了text segment

          這樣做的好處,就是為了實(shí)現(xiàn)Java的垃圾回收機(jī)制。任何的類對象實(shí)例都在Heap中,在Stack中有它們的引用。當(dāng)所以的線程都不在需要某個(gè)引用時(shí),JVM的那個(gè)資源回收線程就會把該實(shí)例從Heap當(dāng)中清楚掉。

          文章告訴我,回收線程要做全局的檢測來確定某個(gè)實(shí)例是否已經(jīng)“無用”了。這樣子,我們可以在代碼上做些工作,來給回收線程加速。
          Test t = new Test();
          ?t.someAction();
          ?// all done
          ?t = null;
          實(shí)例t不再有用時(shí),就把他置為null,告訴JVM:你不用在Stack和Heap之間自己校驗(yàn)啦,我已經(jīng)做好了標(biāo)記,放心回收吧。

          小結(jié):Stack: Primitive data types(primitive types), the addresses of objects(=references).
          ??????????????????????? Heap:? objects.
          前者:基本類型和實(shí)例地址(引用),后者:類實(shí)例

          posted on 2006-07-31 16:28 murainwood 閱讀(745) 評論(2)  編輯  收藏 所屬分類: Java讀書筆記


          FeedBack:
          # re: Stack and Heap
          2006-08-01 11:17 | 小文
          你寫的東東不錯
          蠻有意思的  回復(fù)  更多評論
            
          # re: Stack and Heap
          2006-10-11 17:38 | QQ:199976057
          深入潛出,不錯!!有空交流一下
          有個(gè)問題就是text segment該怎么理解呢
          我的QQ199976057  回復(fù)  更多評論
            
          <2006年7月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          如果真的給你一片天,你敢不敢要?

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 泸水县| 英吉沙县| 化德县| 乌拉特后旗| 平武县| 永泰县| 根河市| 宾川县| 铁岭市| 梓潼县| 深水埗区| 本溪| 清徐县| 乌兰察布市| 榆社县| 乌鲁木齐市| 寿阳县| 桓仁| 工布江达县| 岫岩| 彭阳县| 六枝特区| 呼玛县| 新巴尔虎左旗| 昭苏县| 惠来县| 永和县| 新绛县| 天峻县| 宁强县| 揭东县| 古田县| 英超| 墨玉县| 内乡县| 清河县| 洛川县| 苍南县| 鹤壁市| 连平县| 绿春县|