全局變量存放在堆還是棧 java里的靜態(tài)變量是放在了堆內(nèi)存還是棧內(nèi)存?
java里的靜態(tài)變量是放在了堆內(nèi)存還是棧內(nèi)存?堆區(qū)域:1。存儲(chǔ)所有對(duì)象,每個(gè)對(duì)象都包含相應(yīng)的類信息。(該類的目的是獲取操作說明)2。JVM中的所有線程只共享一個(gè)堆。堆不存儲(chǔ)基本類型和對(duì)象引用,只存儲(chǔ)對(duì)
java里的靜態(tài)變量是放在了堆內(nèi)存還是棧內(nèi)存?
堆區(qū)域:
1。存儲(chǔ)所有對(duì)象,每個(gè)對(duì)象都包含相應(yīng)的類信息。(該類的目的是獲取操作說明)
2。JVM中的所有線程只共享一個(gè)堆。堆不存儲(chǔ)基本類型和對(duì)象引用,只存儲(chǔ)對(duì)象本身的堆棧:1。每個(gè)線程都包含一個(gè)堆棧,它只存儲(chǔ)基本數(shù)據(jù)類型和自定義對(duì)象的引用(而不是對(duì)象),對(duì)象存儲(chǔ)在heap 2中。每個(gè)堆棧中的數(shù)據(jù)(原始類型和對(duì)象引用)都是私有的,其他堆棧無法訪問它。
3. 堆棧分為三個(gè)部分:基本類型變量區(qū)、執(zhí)行環(huán)境上下文和操作指令區(qū)。方法區(qū):1。它也被稱為靜態(tài)區(qū)域。和堆一樣,它也被所有線程共享。方法區(qū)域包含所有類和靜態(tài)變量。2方法區(qū)域包含在整個(gè)程序中總是唯一的元素,例如類和靜態(tài)變量。
全局變量是分配在棧上還是靜態(tài)存儲(chǔ)區(qū)?
在C/C中,內(nèi)存分為五個(gè)區(qū)域:堆、堆棧、空閑存儲(chǔ)、全局/靜態(tài)存儲(chǔ)和常量存儲(chǔ)。堆棧:編譯器在需要時(shí)分配的變量的存儲(chǔ)區(qū),不需要時(shí)自動(dòng)清除。變量通常是局部變量、函數(shù)參數(shù)等。堆:new分配的內(nèi)存塊不是由編譯器管理的,而是由我們的應(yīng)用程序控制的。通常,new對(duì)應(yīng)于delete。如果程序員不釋放它,操作系統(tǒng)將在程序完成后自動(dòng)回收它??臻e內(nèi)存區(qū):由malloc等分配的內(nèi)存塊。它與heap非常相似,但它以free結(jié)束其生命。全局存儲(chǔ)區(qū)(static storage area):將全局變量和靜態(tài)變量的存儲(chǔ)放在一起。初始化的全局變量和靜態(tài)變量在一個(gè)區(qū)域中,未初始化的全局變量和未初始化的靜態(tài)變量在另一個(gè)相鄰區(qū)域中。程序結(jié)束后,系統(tǒng)被釋放。常量存儲(chǔ)區(qū):這是一個(gè)特殊的存儲(chǔ)區(qū),用于存儲(chǔ)常量,不能修改。希望對(duì)你有所幫助
堆區(qū):全局變量,靜態(tài)變量,malloc函數(shù)。堆棧區(qū)域:函數(shù)參數(shù)值,局部變量。
1. 堆?!幾g器自動(dòng)分配和釋放,例如存儲(chǔ)函數(shù)參數(shù)值和局部變量值。2堆由程序分配和釋放。如果它沒有在程序中發(fā)布,它可能會(huì)在程序結(jié)束時(shí)被系統(tǒng)回收,例如全局變量、靜態(tài)變量、malloc函數(shù)。