堆棧存儲的區別



一、堆區: 
1.存儲的全部是對象,每個對象都包含一個與之對應的class的信息。(class的目的是得到操作指令) 
2.jvm只有一個堆區(heap)被所有線程共享,堆中不存放基本類型和對象引用,只存放對象本身 
棧區: 
1.每個線程包含一個棧區,棧中只保存基礎數據類型的對象和自定義對象的引用(不是對象),對象都存放在堆區中 
2.每個棧中的數據(原始類型和對象引用)都是私有的,其他棧不能訪問。 
3.棧分為3個部分:基本類型變量區、執行環境上下文、操作指令區(存放操作指令)。 
方法區: 
1.又叫靜態區,跟堆一樣,被所有的線程共享。方法區包含所有的class和static變量。 
2.方法區中包含的都是在整個程序中永遠唯一的元素,如class,static變量。

二、內存分區
而內存分為四個區:stack segment,heap segment,data segment,code segment;
stack 區存放函數參數和局部變量;heap  區存放對象;data  區存放static 的變量或者字符串常量; code  區存放類中的方法;
因此,靜態變量是存放在data區的 !

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM