java 堆与栈的区别
生活随笔
收集整理的這篇文章主要介紹了
java 堆与栈的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
一直對這兩個概念比較模糊,心里不安,所以下決心好好的看了一下它。
它們都是計算機中的數據結構。
堆(heap):把堆比作一個大倉庫,倉庫里面可以放很多東西。當我們創建一個對象時(new XXX),首先會在堆里面開辟一塊空間放置對象本身,然后再把對象的引用地址放入棧中。最后訪問該對象時,先通過棧找到引用地址,然后再找到實際對象。
棧(stack): 棧/堆棧(FILO)先入后出。類似于槍的彈夾,先放入的子彈最后才打出來。彈夾最下面被稱為棧低,最上面稱為棧頂。 子彈壓入彈夾的過程稱為"進棧",子彈打出去的過程稱為"出棧"。它的特點的容量小,查詢速度快。一般用于存儲基本數據類型變量、臨時變量、局部變量和對象的引用地址。當超過該對象/變量作用域時,java就會釋放該對象/變量的內存空間。如果是對象,則對象本身就成了無主(廢棄)對象,java GC垃圾回收機制在運行時就會把無主對象刪除,回收空間.
我的理解,如果有誤請指出,感激不盡。
轉載于:https://my.oschina.net/scjelly/blog/523945
總結
以上是生活随笔為你收集整理的java 堆与栈的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自动化测试如何解决验证码的问题
- 下一篇: Cocos2d-x 基础元素