JVM內(nèi)存總體一共分為了
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為曲靖企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì),曲靖網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
4個(gè)部分(stack segment、heap segment、code segment、data segment)
當(dāng)我們?cè)诔绦蛑?,申明一個(gè)局部變量的時(shí)候,此變量就存放在了 stack segment(棧)當(dāng)中;
當(dāng)new 一個(gè)對(duì)象的時(shí)候,此對(duì)象放在了heap segment(堆)當(dāng)中;
而static 的變量或者字符串常量 則存在在 data segment(數(shù)據(jù)區(qū))中;
那么類中方法的話,是存在在 code segment(代碼區(qū))中了。
您好,提問者:
java中在內(nèi)存中劃分:棧內(nèi)存和堆內(nèi)存。
1、棧內(nèi)存:棧中是存放一些定義的變量的引用,比如:int a = 1; a那么就存在棧內(nèi)存中,java中垃圾回收是JVM幫我們完成的,這里比C大大提高了程序員的繁碎。如果想要控制可以使用System.gc();來通知JVM虛擬機(jī)執(zhí)行,但是什么時(shí)候執(zhí)行還是由JVM虛擬機(jī)來完成的。
2、堆內(nèi)存:堆中是存放一些比如數(shù)組,map類型等。
您好,java源代碼內(nèi)部是沒有代碼區(qū)與數(shù)據(jù)區(qū)一說的(至少官方文檔沒有見到過),我想您所謂的數(shù)據(jù)區(qū)應(yīng)該是一組需要處理的數(shù)據(jù)吧,但這并不是JDK的標(biāo)準(zhǔn)或規(guī)范。
是這樣的。
你打開命令行窗口,然后輸入 cd "Program Files",回車;
簡(jiǎn)單點(diǎn),也可以輸入cd P ,然后按Tab鍵,會(huì)給你自己補(bǔ)全的,要是你按了出來的不是 "Program Files",那你再按Tab,直到出來為止。
剩下的。。。就是JAVA的事了 。。
類的實(shí)例方法在內(nèi)存中是只有一份,不過肯定不會(huì)是第一個(gè)對(duì)象中,如果是第一個(gè)對(duì)象的話,那么當(dāng)?shù)谝粋€(gè)對(duì)象被銷毀的時(shí)候,那么后面的對(duì)象就永遠(yuǎn)無法調(diào)用了...
類的實(shí)例方法存在一個(gè)專門的區(qū)叫方法區(qū),事實(shí)上類剛裝載的時(shí)候就被裝載好了,不過它們?cè)?睡眠",只是這些方法必須當(dāng)有對(duì)象產(chǎn)生的時(shí)候才會(huì)"蘇醒".(比如,一個(gè)輸出類的成員變量的方法,如果連對(duì)象都沒有,何來的輸出成員變量).所以,方法在裝載的時(shí)候就有了,但是不可用,因?yàn)樗鼪]有指象任何一個(gè)對(duì)象。
而靜態(tài)的又不一樣了,靜態(tài)的東西存在靜態(tài)區(qū),他們和類是一個(gè)等級(jí)的,就是說只要類被裝載,它們就可以直接用.(用類名來調(diào)用).他們不依賴與任何對(duì)象,所以也不能輸出任何對(duì)象的成員屬性.(除非成員屬性也是靜態(tài)的).
而你最后的一句話也是錯(cuò)的,"類的所有數(shù)據(jù)在內(nèi)存中只有靜態(tài)的才又空間".
當(dāng)然不是,每個(gè)對(duì)象在new的時(shí)候都會(huì)在堆區(qū)中開辟內(nèi)存,用來保存對(duì)象的屬性和方法.(實(shí)際上方法保存的只是方法區(qū)的引用,如果保存的是方法本身,那么試想一下,有多少個(gè)對(duì)象就得有多少個(gè)方法,那么又和第一點(diǎn)中"實(shí)例方法在內(nèi)存中只有一份拷貝"相矛盾了)
好了,事實(shí)上內(nèi)存圖很復(fù)雜和麻煩,算比較深的東西了,很多用JAVA多年的人也不太了解其原理,因?yàn)殚_發(fā)也不要用..
更多的問題可以去遠(yuǎn)標(biāo)培訓(xùn)去問技術(shù)老師。