java什么是棧
棧(stack)又名堆棧,它是一種運(yùn)算受限的線(xiàn)性表。其限制是僅允許在表的一端進(jìn)行插入和刪除運(yùn)算。這一端被稱(chēng)為棧頂,相對(duì)地,把另一端稱(chēng)為棧底。向一個(gè)棧插入新元素又稱(chēng)作進(jìn)棧、入?;驂簵?,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素;從一個(gè)棧刪除元素又稱(chēng)作出棧或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的棧頂元素。
引用變量是普通變量,定義時(shí)所在棧中分配內(nèi)存,引用變量在程序運(yùn)行到作用域外釋放。而數(shù)組和對(duì)象本身在堆中分配,即使程序運(yùn)行到使用new產(chǎn)生數(shù)組和對(duì)象的語(yǔ)句所在地代碼塊之外,數(shù)組和對(duì)象本身占用的堆內(nèi)存也不會(huì)被釋放,數(shù)組和對(duì)象本身占用的堆內(nèi)存也不會(huì)被釋放。
1.寄存器:最快的存儲(chǔ)區(qū), 由編譯器根據(jù)需求進(jìn)行分配,我們?cè)诔绦蛑袩o(wú)法控制.
2. 棧:存放基本類(lèi)型的變量數(shù)據(jù)和對(duì)象的引用,但對(duì)象本身不存放在棧中,而是存放在堆(new 出來(lái)的對(duì)象)或者常量池中(字符串常量對(duì)象存放在常量池中。)
3. 堆:存放所有new出來(lái)的對(duì)象。
4. 靜態(tài)域:存放靜態(tài)成員(static定義的)
5. 常量池:存放字符串常量和基本類(lèi)型常量(public static final)。
6. 非RAM存儲(chǔ):硬盤(pán)等永久存儲(chǔ)空間
引用變量是普通變量,定義時(shí)所在棧中分配內(nèi)存,引用變量在程序運(yùn)行到作用域外釋放。而數(shù)組和對(duì)象本身在堆中分配,即使程序運(yùn)行到使用new產(chǎn)生數(shù)組和對(duì)象的語(yǔ)句所在地代碼塊之外,數(shù)組和對(duì)象本身占用的堆內(nèi)存也不會(huì)被釋放,數(shù)組和對(duì)象本身占用的堆內(nèi)存也不會(huì)被釋放。數(shù)組和對(duì)象在沒(méi)有引用變量指向它的時(shí)候,才變成垃圾,不能再被使用,但是仍然占著內(nèi)存, 在隨后的一個(gè)不確定的時(shí)間被垃圾回收器釋放掉。這個(gè)也是java比較占內(nèi)存的主要原因。
java什么是棧
上一篇:java什么是引用類(lèi)型
下一篇:java中什么是重載