servlet單實(shí)例多線程模式 不太明白servlet中要避免使用”實(shí)例變量”的做法 。把變量和內(nèi)存看看 。
寄存器:JVM內(nèi)部虛擬寄存器,存取速度非常快,程序不可控制(當(dāng)時(shí)學(xué)的不好,現(xiàn)在也沒學(xué),還有個(gè)大概印象…….)
代碼段:用來(lái)存放從硬盤上讀取的源程序代碼 。
堆: 存儲(chǔ)所有new出來(lái)的對(duì)象(包括成員變量,但不包含成員方法,因?yàn)橥粋€(gè)類的對(duì)象擁有各自的成員變量,存儲(chǔ)在各自的堆中,但是他們共享該類的方法) 沒有任何引用指向的對(duì)象就是垃圾,垃圾回收器(GC)會(huì)不定時(shí)到內(nèi)存中清掃垃圾 。內(nèi)存泄漏:不再使用的對(duì)象沒有被及時(shí)的回收,當(dāng)累計(jì)多了,就會(huì)發(fā)生內(nèi)存溢出了 。
棧: 存儲(chǔ)正在調(diào)用的方法中的所有局部變量(包括參數(shù)) 調(diào)用方法時(shí)會(huì)為該方法在棧中分配一塊 對(duì)應(yīng)的棧幀,棧幀中包含方法中的所有局部變量(包括參數(shù)),方法調(diào)用結(jié)束時(shí),棧幀被消除,局部變量也隨之消失(速度很快,很及時(shí)); 也保存類的實(shí)例,即堆區(qū)對(duì)象的引用 。
常量池:JVM為每個(gè)已經(jīng)加載的類型維護(hù)一個(gè)常量池,常量池就是這個(gè)類型用到的常量的一個(gè)有序集合 。包括直接常量(基本類型、String)和對(duì)其他類型、方法、字段的引用 (與C++不同,C++是直接按址找方法;java是先生成符號(hào),然后JVM自己去找)。池中的數(shù)據(jù)和數(shù)組一樣通過索引訪問。由于常量池包含了一個(gè)類型所有的對(duì)其他類型、方法、字段的符號(hào)引用,所以常量池在Java的動(dòng)態(tài)鏈接中起了核心作用 。常量池存儲(chǔ)于堆中 。
方法區(qū):存儲(chǔ).class字節(jié)碼文件,包括方法(只有一份,通過this來(lái)區(qū)分具體的對(duì)象)
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注