²`¤JåªRJavaµêÀÀ¾÷(·½½XåªR»P¹ê¨Ò¸Ô¸Ñ°ò¦¨÷)
¤º®e¤j¿û
¥»®Ñ¥H¬y¦æªº¤u·~¯ÅJavaµêÀÀ¾÷HotSpot¬°°ò¦¡A¸Ô²ÓåªR¨ä°ò¦¥\¯à¼Ò¶ôªº·½½X¡A¤O¨DÁ¿²M·¡¨CÓ«n§Þ³Nªºì²z©M¹ê²{²Ó¸`¡A¦P®Éµ²¦X¤j¶q¹ê¨Ò©M¹Ï¥ÜÀ°§UŪªÌ§ó¦n¦a²z¸Ñ©ÒÁ¿¤º®e¡C¥»®Ñ¨S¦³¤¶²ÐJava¹B¦æ®Éªº´Ìµ²ºc¡A¥H¤Î¸ÑÄÀ°õ¦æ»P½sͰõ¦æµ¥ª¾ÃÑÂI¡A³o¨Ç¤º®e¦b¥»®Ñªº©n©f½g¡m²`¤JåªRJavaµêÀÀ¾÷¡G·½½XåªR»P¹ê¨Ò¸Ô¸Ñ¡]¹B¦æ®É¨÷¡^¡n¤@®Ñ¤¤¶i¦æ¸Ô²Óªº¤¶²Ð¡C
¥»®Ñ¦@13³¹¡A³¹¸`¶¶§Ç°ò¥»¤W¬O«ö·ÓÃþªº¥Í©R©P´Á¶i¦æ½s±Æªº¡C¥»®Ñ²[»\ªº¥Dn¤º®e¦³HotSpot VM²¤¶¡B¹ï¶Hªº¤G¤À¼Ò«¬¡BÃþªº¸ü¤J¾÷¨î¡BÃþ»P±`¶q¦Àªº¸ÑªR¡BÄæ¦ìªº¸ÑªR¡B¤èªkªº¸ÑªR¡BÃþªº³s±µ»Pªì©l¤Æ¡B¹B¦æ®É¼Æ¾Ú°Ï¡BÃþ¹ï¶Hªº³Ð«Ø©Mªì©l¤Æ¡BSerial©U§£¦¬¶°¾¹¡BSerial Old©U§£¦¬¶°¾¹¥H¤ÎJava¤Þ¥ÎÃþ«¬ªº¹ê²{ì²zµ¥¡C
¥»®Ñ¥Dn±¦V·Qn²`¤J¾Ç²ß©M¬ã¨sJava»y¨¥¹B¦æì²zªº¤H¡A¤×¨ä¬O¥¿¦b±q¨Æ©Î±N¨Ó·Qn±q¨ÆµêÀÀ¾÷¶}µoªº½sµ{¤Hû¡C¥t¥~¡A¥»®ÑÁÙ«D±`¾A¦XJava¨D¾¤Hû¾\Ū¡A¥i¥HÀ°§U¥L̨t²Î´x´¤µêÀÀ¾÷ªº¬ÛÃöª¾ÃÑ¡A±q¦Ó´å¤b¦³¾l¦aÀ³¹ï¬ÛÃö¤½¥q©Û¸u®Éªº¦Ò¬d¡C
§@ªÌ¤¶²Ð
°¨´¼|³d½s:¼B¥ßë
°¨´¼¡A¦³¦h¦~ªºJava¶}µo¸gÅç¡A¥ý«á¦b´x´å¤Ñ¤U©M¨ÊªF¶°¹Î¥ô³nÅé¬ãµo¤uµ{®v¡C¹ï½sµ{»y¨¥ªº©³¼h¹ê²{¦³¿@«pªº¿³½ì¡A²`¤J¬ã¨s¹LOpenJDKªº·½½X¹ê²{¡CµÛ¦³¡m²`¤J¸ÑªRJava½s;¹¡G·½½XåªR»P¹ê¨Ò¸Ô¸Ñ¡n¤@®Ñ¡A»á¨üŪªÌ¦nµû¡C
¥Ø¿ý
«e¨¥
²Ä1³¹ »{ÃÑHotSpot VM
1.1 ªìÃÑJVM
1.2 ½sĶOpenJDK 8
1.2.1 ·Ç³Æ½sĶÀô¹Ò
1.2.2 ¤U¸ü·½¥N½X
1.2.3 ½sĶ·½¥N½X
1.2.4 ³q¹LGDB½Õ¸Õ·½¥N½X
1.2.5 ³q¹LEclipse½Õ¸Õ·½¥N½X
1.3 HotSpot VM·½¥N½Xµ²ºc
1.4 ±Ò°ÊHotSpot VM
²Ä2³¹ ¤G¤À¼Ò«¬
2.1 JavaÃþªºªí¥Ü¡X¡XKlass
2.1.1 KlassÃþ
2.1.2 InstanceKlassÃþ
2.1.3 InstanceKlassÃþªº¤lÃþ
2.1.4 ArrayKlassÃþ
2.1.5 TypeArrayKlassÃþ
2.1.6 ObjArrayKlassÃþ
2.2 Java¹ï¶Hªºªí¥Ü¡X¡Xoop
2.2.1 oopDescÃþ
2.2.2 markOopDescÃþ
2.2.3 instanceOopDescÃþ
2.2.4 arrayOopDescÃþ
2.2.5 arrayOopDescÃþªº¤lÃþ
2.3 ¾Þ§@¥y¬`¡X¡XHandle
2.3.1 ¥y¬`Handleªº©w¸q»P³Ð«Ø
2.3.2 ¥y¬`HandleªºÄÀ©ñ
²Ä3³¹ Ãþªº¸ü¤J
3.1 Ãþ¸ü¤J¾¹
3.1.1 ¤Þ¾ÉÃþ¸ü¤J¾¹/±Ò°ÊÃþ¸ü¤J¾¹
3.1.2 ÂX®iÃþ¸ü¤J¾¹
3.1.3 À³¥ÎÃþ¸ü¤J¾¹/¨t²ÎÃþ¸ü¤J¾¹
3.1.4 ºc³yÃþ¸ü¤J¾¹¹ê¨Ò
3.1.5 ÃþªºÂù¿Ë©e¬£¾÷¨î
3.2 ¹w¸ü¤JÃþ
3.2.1 ®Ö¤ßÃþªº¹w¸ü¤J
3.2.2 ¼Æ²Õªº¹w¸ü¤J
3.3 Java¥DÃþªº¸Ë¸ü
3.4 IJµoÃþªº¸Ë¸ü
²Ä4³¹ Ãþ»P±`¶q¦Àªº¸ÑªR
4.1 Ãþªº¸ÑªR
4.1.1 Class¤å¥ó®æ¦¡
4.1.2 ClassFileParserÃþ²¤¶
4.1.3 ClassFileStreamÃþ²¤¶
4.1.4 ¸ÑªRÃþ¤å¥ó
4.1.5 «O¦s¸ÑªRµ²ªG
4.2 ±`¶q¦Àªº¸ÑªR
4.2.1 ConstantPoolÃþ
4.2.2 ³Ð«ØConstantPool¹ê¨Ò
4.2.3 ¸ÑªR±`¶q¦À¶µ
²Ä5³¹ Äæ¦ìªº¸ÑªR
5.1 Äæ¦ìªº¸ÑªR°ò¦
5.1.1 FieldAllocationCount»PFieldAllocationTypeÃþ
5.1.2 ¬°Äæ¦ì¤À°t¤º¦sªÅ¶¡
5.1.3 Àò¨úÄæ¦ì«H®§
5.2 °°¦@¨É
5.3 Äæ¦ìªº¤º¦s¥¬§½
5.3.1 ÀRºAÄæ¦ì¤º¦s¶ôªº°¾²¾¶q
5.3.2 «DÀRºAÄæ¦ì¤º¦s¶ôªº°¾²¾¶q
5.3.3 pºâ¨CÓÄæ¦ìªº°¾²¾¶q
5.3.4 @ContendedÄæ¦ìªº°¾²¾¶q
5.4 Äæ¦ìªºª`¤J
5.5 ¹ï¶HÃþ«¬Äæ¦ìªº¹M¾ú
²Ä6³¹ ¤èªkªº¸ÑªR
6.1 Method»PConstMethodÃþ
6.1.1 MethodÃþ
6.1.2 ConstMethod Ãþ
6.2 ½Õ¥Îparse_methods()¨ç¼Æ¸ÑªR¤èªk
6.2.1 ³Ð«ØMethod»PConstMethod¹ê¨Ò
6.2.2 «O¦s¤èªk¸ÑªR«H®§
6.3 klassVtableµê¨ç¼Æªí
6.3.1 klassVtableÃþ
6.3.2 pºâvtableªº¤j¤p
6.3.3 vtableªºªì©l¤Æ
6.4 klassltableµê¨ç¼Æªí
6.4.1 klassltableÃþ
6.4.2 pºâitableªº¤j¤p
6.4.3 itableªºªì©l¤Æ
²Ä7³¹ Ãþªº³s±µ»Pªì©l¤Æ
7.1 Ãþªº³s±µ
7.2 ÃþªºÅçÃÒ
7.3 Ãþªº«¼g
7.3.1 ¥Í¦¨±`¶q¦À½w¦s¶µ¯Á¤Þ
7.3.2 «¼g¦ì¤¸²Õ½X«ü¥O
7.3.3 ³Ð«Ø±`¶q¦À½w¦s
7.4 ¤èªkªº³s±µ
7.5 Ãþªºªì©l¤Æ
²Ä8³¹ ¹B¦æ®É¼Æ¾Ú°Ï
8.1 HotSpot VMªº¤º¦s¹º¤À
8.2 ¤¸ªÅ¶¡
8.2.1 ¤¸ªÅ¶¡ªº¼Æ¾Úµ²ºc
8.2.2 ¤º¦s¶ôªººÞ²z
8.2.3 ¤º¦s¤À°t
8.2.4 ¤º¦s¦^¦¬
8.3 °ïªÅ¶¡
8.3.1 CollectedHeap¡BGeneration»PSpaceÃþ
8.3.2 Java°ïªº¦^¦¬µ¦²¤
8.3.3 Java°ïªºªì©l¤Æ
²Ä9³¹ Ãþ¹ï¶Hªº³Ð«Ø
9.1 ¹ï¶Hªº³Ð«Ø
9.2 ¹ï¶Hªº¤º¦s¤À°t
9.2.1 ¦bTLAB¤¤¤À°t¤º¦s
9.2.2 ¦b°ï¤¤¤À°t¤º¦s
9.2.3 ²K¥[¹ï¶H°¾²¾ªí°O¿ý
²Ä10³¹ ©U§£¦^¦¬
10.1 ¤À¥N©U§£¦^¦¬
10.1.1 Serial©MSerial Old©U§£¦¬¶°¾¹
10.1.2 ½Æ»sºtºâªk©M¡u¼Ð°O-¾ã²z¡vºtºâªk
10.1.3 ¥dªí
10.2 ©U§£¦^¦¬½uµ{
10.3 ¦w¥þÂI
10.3.1 Ãö©ó¦w¥þÂI
10.3.2 ªý¶ë½uµ{©Mª¬ºA¤Á´«½uµ{¶i¤J¦w¥þÂI
10.3.3 ¸ÑÄÀ½uµ{¶i¤J¦w¥þÂI
10.3.4 ½sͽuµ{¶i¤J¦w¥þÂI
10.3.5 °õ¦æ¥»¦a¥N½X½uµ{¶i¤J¦w¥þÂI
²Ä11³¹ Serial©U§£¦¬¶°¾¹
11.1 IJµoYGC
11.2 ¦~»´¥Nªº©U§£¦^¦¬
11.3 ¼Ð°O´¶³qªº®Ú¹ï¶H
11.4 ¼Ð°O¦Ñ¦~¥N¤Þ¥Îªº¹ï¶H
11.5 »¼Âk¼Ð°O¬¡ÅD¹ï¶H¨Ã½Æ»s
²Ä12³¹ Serial Old©U§£¦¬¶°¾¹
12.1 IJµoFGC
12.2 ¼Ð°O¬¡ÅD¹ï¶H
12.3 pºâ¬¡ÅD¹ï¶Hªº¦a§}
12.4 §