Java的面向?qū)ο缶幊?/a>">Java的面向?qū)ο缶幊?/a>
625
2025-03-31
堆
1:存儲(chǔ)的全部都是對(duì)象,每個(gè)對(duì)象都包含一個(gè)與之對(duì)應(yīng)的class的信息(class的目的是得到操作指令)
2:JVM只有一個(gè)堆區(qū)被所有線程共享,堆中不放基本類(lèi)型和對(duì)象引用,只存放對(duì)象本身
棧
1:每個(gè)線程包含一個(gè)棧區(qū),棧中只保存基礎(chǔ)數(shù)據(jù)類(lèi)型的對(duì)象和自定義對(duì)象的引用(不包含對(duì)象),對(duì)象都在堆區(qū)。
2:每個(gè)棧中的數(shù)據(jù)(原始類(lèi)型和對(duì)象引用)都是私有的,其他棧不能訪問(wèn)
3:棧分為3個(gè)部分:基本類(lèi)型變量區(qū)、執(zhí)行環(huán)境上下文、操作指令區(qū)(存放操作指令)
方法區(qū)
1:又叫靜態(tài)區(qū),跟堆一樣,被所有線程共享。方法區(qū)包含所有的class和static變量
2:方法區(qū)中包含的都是在整個(gè)程序中永遠(yuǎn)唯一的元素,如class、static變量
public class AppMain ? ? ? ? ? ? ? ?//運(yùn)行時(shí), jvm 把a(bǔ)ppmain的信息都放入方法區(qū)
{
public static void main(String[] args) ?//main 方法本身放入方法區(qū)。
{
Sample test1 = new Sample(" 測(cè)試1 "); ? //test1是引用,所以放到棧區(qū)里, Sample是自定義對(duì)象應(yīng)該放到堆里面
Sample test2 = new Sample(" 測(cè)試2 ");
test1.printName();
test2.printName();
}
}
public class Sample ? ? ? ?//運(yùn)行時(shí), jvm 把Sample的信息都放入方法區(qū)
{
/**
* 范例名稱(chēng)
*/
private String name; ? ? ?//new Sample實(shí)例后, name 引用放入棧區(qū)里, name 對(duì)象放入堆里
/**
* 構(gòu)造方法
*/
public Sample(String name) {
this.name = name;
}
/**
* 輸出
*/
public void printName() ? //print方法本身放入 方法區(qū)里。
{
System.out.println(name);
}
}
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。