java棧stack和堆heap的工作原理,用途及區(qū)別?

java堆和棧的區(qū)別【新手可忽略不影響繼續(xù)學(xué)習(xí)】

Java中內(nèi)存分成兩種:一種是棧stack,一種是堆heap。
馬克- to-win:馬克 java社區(qū):防盜版實名手機尾號: 73203。
函數(shù)中的一些基本類型的變量(int, float)和對象的引用變量(reference)都在函數(shù)的棧中,如int a = 5,有個地方先存5,之后再讓a指向那個地方。w=new Window(),是w指向Window的首地址。馬克-to-win,存取速度快,稍遜于寄存器, 比堆快,

函數(shù)執(zhí)行完后,Java會自動釋放掉為函數(shù)里變量開辟的棧內(nèi)存空間,該內(nèi)存空間可以立即被另作他用。

堆heap內(nèi)存用來存放由new創(chuàng)建的對象和數(shù)組。堆內(nèi)存,負(fù)責(zé)運行時(runtime, 執(zhí)行生成的class文件時)數(shù)據(jù),由JVM的自動管理。缺點是,存取速度較慢。

棧中的引用變量指向堆中的對象或數(shù)組。