java記憶體管理淺析

來源:互聯網
上載者:User

標籤:java記憶體管理   數組儲存方式   

   首先感謝強大的網路資源,本博文是根據網路上的各種資源進行整合,然後加入自己的理解而成,可能會與其它網路資源有重複,望其他作者多多包涵。由於初學java,如有不準確的描述還請讀者指正。下面正式切入正題:

  眾所周知,java和C++都是物件導向的程式設計語言,但是與C++相比,java上手比較容易,而且使用方便。小弟對c++瞭解不是很多,但是有一點是C++初學者最為頭痛的問題,那就是記憶體管理,這也正是C++和java之間很大的一個區別。在C++中,記憶體是依靠程式員自己來管理的,編寫程式過程中稍有不慎就會導致致命的錯誤————崩潰;而java中,記憶體是依靠java虛擬機器來管理的,叫做記憶體回收機制,程式員可以不用去過多關心這方面的東西,因此也剩下了不少的時間和精力。但是對於一個優秀的程式員而言,這種記憶體自動管理的機制並不是一件好事,就像手工製作的皮鞋遠比機器製作的皮鞋要好的多,舒服的多一樣。記憶體自動管理不僅會降低程式的運行效率,同時也降低了程式的可靠性,所以,java獲得了方便,易學的優勢是在犧牲了效率和程式可靠性的基礎之上的。既然java記憶體管理都是自動化的,那我們為啥還要去瞭解呢,原因很簡單:有助於個人能編寫出更加優秀的代碼。

下面就讓我們瞭解一下java記憶體的管理機制:

  java記憶體的管理無非就是兩點:記憶體的分配和記憶體的回收。

  其中記憶體配置包括堆和棧兩部分:堆中儲存的都是實體,而棧中儲存的是指向實體的引用;

例如:建立一個數組  int[] arr = new int[3];在記憶體中的分配是這樣的:

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/5B/64/wKiom1UHu_rBQvhmAACTUcQeXvo501.jpg" title="數組在記憶體中的儲存" alt="wKiom1UHu_rBQvhmAACTUcQeXvo501.jpg" />

  其中,棧中的資料不是長久存在的。arr位於棧中,其中存放的是數組的地址,一旦出了範圍,arr將被釋放掉,而堆中的資料不會被釋放,但是也沒有索引能夠擷取數組的資料。因為arr是找到數組資料的唯一一把鑰匙,鑰匙丟了,那麼資料也就無法被利用了,也就成了記憶體垃圾,在C++中,這部分垃圾是程式員自己去處理的,但是在java中有專門的記憶體回收機制,由虛擬機器來完成。

  同樣,java程式運行中調用函數時,也是先載入到棧中,每一個函數形成一個幀,同樣遵循先進後出的原則,執行完後這部分記憶體就被釋放掉,這也是為什麼函數中局部變數為什麼會只在範圍中有效原因。

 附圖:Java虛擬機器運行時的資料區

相關詳細知識參見:http://www.cnblogs.com/gw811/archive/2012/10/18/2730117.html

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/5B/64/wKiom1UHw-bCIRS9AAMUfiGQFZw302.jpg" title="image_5.png" alt="wKiom1UHw-bCIRS9AAMUfiGQFZw302.jpg" />


本文出自 “軟體開發交流” 部落格,請務必保留此出處http://smile2015.blog.51cto.com/9250194/1621428

java記憶體管理淺析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.