Qhov kom zoo dua siv tsiaj ntawv pawg Java yog dab tsi?

Stack Variables

Tshooj zog
Nyob rau cov tshooj no peb yuav tham txog cov kev txawv mus txis nqi Java thiab tus kom zoo dua thiab disadvantage siv lub zog los yog zog pawv. Nyob rau hauv java, yeej sib txawv me ntsis kuj sib txawv thiab pawg thiab lwm yam nqi ib yam li lub zos thiab cov chav kawm ntawv. Qhov tsab xov xwm no yuav piav cov lus piv txwv uas muaj thiab pab koj rau siv kom raug.

Taw qhia:
Cov JVM divides lub cim xeeb ua khej nram qab no:

  • Heap: Seem no muaj cov khoom thiab tau cov tsiaj ntawv siv.
  • Pawg: Seem no muaj kev, lub zog thiab siv cov tsiaj ntawv.
  • Chaws: Seem no muaj cov byte chaws.
  • Static: Seem no muaj lub zog zoo li qub thiab txoj kev.

Nyob rau hauv Java, peb yuav txis zog rau cov nram qab no peb paub cai:

  • Cov tsiaj ntawv lom.
  • Chav kawm qib los zoo li qub zog.
  • Zos los yog lub zog pawv.

Cov tsiaj ntawv lom: Lom zog qhia hais tias lawv nyob ua ib ke ib lom ntawm cov chav kawm ntawv. Yog hais tias ib hoob kawm muaj kaum zaus, peb yuav tau luam txhua lom qhob kaum. Nyiaj nqi lom yog haujlwm kuj ua ib li tsis zoo li qub zog.

Qib kawm los zoo li qub zog: Chav kawm ntawv raws los yog zoo li qub zog nyob ua ib ke ib chav kawm ntawv txawm lom ntau npaum li cas rau cov hoob kawm peb tsim. Cov no yog me siv tau cov lo lus tseem ceeb zoo li qub. Zoo li qub zog yog initialized thaum ntej cov hoob kawm loaded hauv lub JVM.

Hauv zos los sis pawg zog: Hauv zos los sis pawg nqi twb txhais muaj nyob rau hauv ib txoj kev thiab cov chaw uas duav txhua yam. Lawv tau nws txawv tus neeg siv modifier siv txis lawv nyob.

Java memory distribution

Java nco tis

Pic1: Java nco tis

Peb pom cov nram qab no peb java lis dej num

Qhia 1: Mus saib tau ib pawg kuj sib txawv thiab:

[Chaws]

pob com.home.variables;

tsev kawm StackVariables {

// Siv cov tsiaj ntawv pawg

pej xeem tsis muaj dabtsis stackAccess(rau cov menyuam maxVal) {

rau cov menyuam j = 0;

rau (rau cov menyuam kuv = 0; Kuv < val; i ) {

j = 1;

}

}

}

[/Chaws]

Qhia 2: Rau ib tus neeg kuj sib txawv thiab lom

[Chaws]

pob com.home.variables;

tsev kawm InstanceVariables {

lwm yam rau cov menyuam instVar;

//Kuj sib txawv thiab lom hoob kawm ntawv

pej xeem tsis muaj dabtsis instanceAccess(rau cov menyuam val) {

rau (rau cov menyuam kuv = 0; Kuv < val; i ) {

instVar = 1;

}

}

}

[/Chaws]

Qhia 3: Rau ib tug kuj sib txawv thiab zoo li qub

[Chaws]

pob com.home.variables;

tsev kawm StaticVariables {

lwm yam zoo li qub rau cov menyuam staticVar;

//Hoob kawm zoo li qub kuj tsis paub meej saib

pej xeem tsis muaj dabtsis staticAccess(rau cov menyuam val) {

rau (rau cov menyuam kuv = 0; Kuv < val; i ) {

staticVar = 1;

}

}

}

[/Chaws]

Txhua yam ntawm tus java qhia saum toj no executes ib lub voj xov tooj sib npaug ntawm iterations rau cov. Tib qhov uas lawv txawv yog hom kuj sib txawv thiab uas tau incremented li ntawm cov kev voj. Nyob rau hauv daim qhia 1, ib pawg koom kuj sib txawv thiab yog siv thiab incremented los 1 txhua lub sij hawm lub voj executes. Qhia 2 pom tias yog ib qho piv txwv ntawm kev siv thiab incrementing npaum li hoob kawm los yog ib qho lom theem kuj sib txawv thiab. Qhia 3 yog ib qho piv txwv uas siv cov kev incrementing ib tug kuj sib txawv thiab zoo li qub.

Lom theem zog thiab zoo li qub zog noj yuav luag tib lub sij hawm yuav ua txim tuag pes tsawg. Whereas hauv zos los yog ob rau peb zaug ceev zog pawv. Nyob rau ntawm zos los yog Tshooj zog, vim muaj cov JVM muaj ua tau ua hauj lwm tsawg dua li thaum txheejtxheem zoo li qub los yog hoob kawm qib los lom theem zog. Cov lus hauv qab no generated byte chaws ua luaj:

Qhia 4: Byte chaws generated tiv thaiv tsis tau qhia 1 (Pawg saib)

[Chaws]

Txoj kev qhuav qhawv stackAccess(rau cov menyuam)

0 iconst_0 //Push 0 mus rau cov pawg.

1 istore_2 //Pop 0 thiab muab nws tom Performance index 2 ntawm qhov chaw lub rooj kuj tsis paub meej(j).

2 iconst_0 //Push 0.

3 istore_3 //Pop 0 thiab muab nws tom Performance index 3 ntawm qhov chaw lub rooj kuj tsis paub meej(Kuv).

4 goto 13 //Dhia mus rau qhov chaw nyob 13.

7 iinc 2 1 //Increment j muab ntawm Performance index 2 los ntawm 1.

10 iinc 3 1 //Increment kuv muab hauv Performance index 3 los ntawm 1.

13 iload_3 //Push tus nqi ntawm qhov Performance index 3(Kuv).

14 iload_1 //Push tus nqi ntawm qhov Performance index 1(val).

15 if_icmplt 7 //Pop kuv thiab val. Dhia mus rau qhov chaw nyob 7 Yog hais tias kuv yog tsawg tshaj li val.

18 rov qab //Return mus rau txoj kev.

[/Chaws]

Qhia 5: Byte chaws generated tiv thaiv tsis tau qhia 2 (Lom los yog hoob kawm theem ntaub)

[Chaws]

Txoj kev qhuav qhawv instanceAccess(rau cov menyuam)

0 iconst_0 //Push 0 mus rau cov pawg.

1 istore_2 //Pop 0 thiab muab nws tom Performance index 2 ntawm qhov chaw lub rooj kuj tsis paub meej(Kuv).

2 goto 18 //Dhia mus rau qhov chaw nyob 18.

5 aload_0 //Push Performance index 0(no).

6 dup //Duplicate rau saum tshooj nqi thiab qhov nws thawb nws.

7 getfield #19 <Teb rau cov menyuam instVar>

//Pop lub nruas siv rau qhov no thiab nias cov nqi instVar.

10 iconst_1 //Push 1.

11 qhov tseem ceeb ntawm ob sab saum toj //Pop iadd, nias lawv zaum.

12 putfield #19 <Teb rau cov menyuam instVar>

//Pop rau sab saum toj ob qhov tseem ceeb thiab cia tus zaum hauv instVar.

15 iinc 2 1 //Increment kuv muab hauv Performance index 2 los ntawm 1.

18 iload_2 //Push tus nqi ntawm qhov Performance index 2(Kuv).

19 iload_1 //Push tus nqi ntawm qhov Performance index 1(val).

20 if_icmplt 5 //Pop kuv thiab val. Dhia mus rau qhov chaw nyob 5 Yog hais tias kuv yog tsawg tshaj li val.

23 rov qab //Return mus rau txoj kev.

[/Chaws]

Qhia 6: Byte chaws generated tiv thaiv tsis tau qhia 6 (Saib zoo li qub)

[Chaws]

Txoj kev qhuav qhawv staticAccess(rau cov menyuam)

0 iconst_0 //Push 0 mus rau cov pawg.

1 istore_2 //Pop 0 thiab muab nws tom Performance index 2 ntawm qhov chaw lub rooj kuj tsis paub meej(Kuv).

2 goto 16 //Dhia mus rau qhov chaw nyob 16.

5 getstatic #25 <Teb rau cov menyuam staticVar>

//Thawb tus nqi ntawm lub qhov pas rau staticVar.

8 iconst_1 //Push 1.

9 qhov tseem ceeb ntawm ob sab saum toj //Pop iadd, nias lawv zaum.

10 putstatic #25 <Teb rau cov menyuam staticVar>

//Pop tus nqi rau zaum thiab muab tso rau hauv staticVar.

13 iinc 2 1 //Increment kuv muab hauv Performance index 2 los ntawm 1.

16 iload_2 //Push tus nqi ntawm qhov Performance index 2(Kuv).

17 iload_1 //Push tus nqi ntawm qhov Performance index 1(val).

18 if_icmplt 5 //Pop kuv thiab val. Dhia mus rau qhov chaw nyob 5 Yog hais tias kuv yog tsawg tshaj li val.

21 rov qab //Return mus rau txoj kev.

[/Chaws]

Cov hais los saum toj generated byte chaws rau cov le caag peb muab ib daim duab uas siv pawv theem zog los yog lub zog yog cov ib npaum txoj kev siv zog hauv Java. JVM yog pawg raws li thiab yog vim li no ntau optimized siv pawv cov. Tus tsiaj ntawv lub zos yeej muab cia rau hauv ib lub zos kuj tsis paub meej cov lus rau lub Java operand pawg thiab no puas siv tau yooj yim heev thiab nraaj. Nws yuav ib tug kim yi yuav siv thiab muab ib tug zoo li qub los yog ib qho lom theem kuj sib txawv thiab raws li tus JVM twb siv ib qho kim opcode thiaj li saib tau cov tsiaj ntawv ntawm lub pas dej qhov ua ke.

Cov cai uas tau muab rau hauv daim qhia 2 thiab qhia 3 restructured tau txoj kev ua hauj lwm nyob rau hauv ib txoj kev npaum li no.

Qhia 7: Txoj kev hloov rau hauv tsev, ib tug kuj sib txawv thiab kev lom

[Chaws]

pob com.home.variables;

tsev kawm InstanceVariables {

lwm yam rau cov menyuam instVar;

//Kuj sib txawv thiab lom hoob kawm ntawv

pej xeem tsis muaj dabtsis instanceAccess(rau cov menyuam val) {

rau cov menyuam j = instVar;

rau (rau cov menyuam kuv = 0; Kuv < val; i ) {

j = 1;

}

instVar = j;

}

}

[/Chaws]

Qhia 8: Txoj kev hloov rau hauv tsev, kuj sib txawv thiab zoo li qub

[Chaws]

pob com.home.variables;

tsev kawm InstanceVariables {

lwm yam rau cov menyuam staticVar;

//Kuj sib txawv thiab lom hoob kawm ntawv

pej xeem tsis muaj dabtsis instanceAccess(rau cov menyuam val) {

rau cov menyuam j = staticVar;

rau (rau cov menyuam kuv = 0; Kuv < val; i ) {

j = 1;

}

staticVar = j;

}

}

[/Chaws]

Raws li peb pom txoj kev instanceAccess thiab staticAccess yog hloov luam lawv lom los zoo li qub zog rau hauv ib lub zos pawg kuj sib txawv thiab. Lub lag luam los yog cov manipulation yam tej tus kuj sib txawv thiab tau theej hauv pawg thiab thaum lub manipulation ntawm kuj sib txawv thiab ib tug lawm, cov nqi no yog tau theej rov qab mus rau lom lossis kuj sib txawv thiab zoo li qub. Kev hloov tej yam yooj yim no ho pab txoj kev ntawv uas instanceAccess thiab staticAccess. Qhov kev hloov no nrog rau lub sij hawm tso tag nrho cov peb kev ua yog tam sim no zoo tib yam.

Kauj tsis rov txiav txim pab Disease fact tias peb yuav tsum tsis txhob siv zoo li qub los lom zog. Theej peb yuav tsum siv txawm mechanism ua rau qhov kev txiav txim zoo thiab puas ntau npaum rau peb tsim. e.g. nyob rau hauv qhov piv txwv li hais los saum toj, Yog peb yuav tau nkag tau mus saib ib tus zoo li qub los yog ib tug kuj sib txawv thiab lom nyob rau hauv lub voj, peb yuav nws ua kom tus ntawv yog ib ncuas storing lawv nyob rau hauv ib lub zos pawg kuj sib txawv thiab. Daim ntawv thiab muab ib theem ntawm cov byte ntau txoj lus qhia rau cov JVM rau txim tuag.

Txoj kev: Los xaus kev sab laj, peb muaj scientific qais cov ntsiab lus hauv qab no. Peb yuav tsum to taub java zog thiab lawv tau. Thiab lub qhov tseem ceeb tshaj plaws yog qhov yuav ua raws li cov nqi rau qhov chaw thwj. Cia siab qhov tsab xov xwm no yuav pab kom koj nkag siab txog cov lus thiab nws siv nyob rau hauv koj daim ntawv thov.

  • JVM divides tus nco ua khej nram qab no :Heap, Pawg, Code thiab Static
  • Java peb cov mus txis qhob peb txoj kev hauv qab no rau:
    • Lom
    • Static
    • Hauv zos los sis pawg.
  • Siv pawv tsiaj ntawv qib accelerates lub tiav ib qhov kev pab cuam los ntawm ob tug los peb zaug.
  • Yog hais tias yuav tsum siv ib tug zoo li qub los yog ib qho lom theem kuj sib txawv thiab, peb yuav tsum tau luam nws los kuj sib txawv thiab lub zos ua ntej manipulating cov ntaub ntawv los yog ua tej lag luam.

 

 

 

 

 

============================================= ============================================== Yuav zoo TechAlpine phau ntawv rau Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Txaus siab rau qhov blog? Tshaj tawm lus thov :)

Follow by Email
LinkedIn
LinkedIn
Share