Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
С°×¶¼ÄÜ¿´¶®µÄjavaÐéÄâ»úÄÚ´æÇøÓò»®·Ö
 
×÷ÕߣºÍÁ¶¹ÊÇÎÒµÄ×î°®
  5937  次浏览      31
 2021-4-22 
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜÁËÐéÄâ»ú¡¢ÐéÄâ»ú×é³É£ºÕ»¡¢³ÌÐò¼ÆÊýÆ÷¡¢·½·¨Çø¡¢±¾µØ·½·¨Õ»¡¢¶ÑµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

Ò»¡¢ÐéÄâ»ú

ͬÑùµÄjava´úÂëÔÚ²»Í¬Æ½Ì¨Éú³ÉµÄ»úÆ÷Âë¿Ï¶¨ÊDz»Ò»ÑùµÄ£¬ÒòΪ²»Í¬µÄ²Ù×÷ϵͳµ×²ãµÄÓ²¼þÖ¸ÁÊDz»Í¬µÄ¡£

ͬһ¸öjava´úÂëÔÚwindowsÉÏÉú³ÉµÄ»úÆ÷Âë¿ÉÄÜÊÇ0101.......£¬ÔÚlinuxÉÏÉú³ÉµÄ¿ÉÄÜÊÇ1100......£¬ÄÇôÕâÊÇÔõôʵÏÖµÄÄØ£¿

²»ÖªµÀͬѧÃÇ»¹¼Ç²»¼ÇµÃ£¬ÔÚÏÂÔØjdkµÄʱºò£¬ÎÒÃÇÔÚoracle¹ÙÍø£¬»ùÓÚ²»Í¬µÄ²Ù×÷ϵͳ»òÕßλÊý°æ±¾ÒªÏÂÔØ²»Í¬µÄjdk°æ±¾£¬Ò²¾ÍÊÇ˵Õë¶Ô²»Í¬µÄ²Ù×÷ϵͳ£¬jdkÐéÄâ»úÓв»Í¬µÄʵÏÖ¡£

ÄÇôÐéÄâ»úÓÖÊÇʲô¶«Î÷ÄØ£¬ÈçͼÊÇ´ÓÈí¼þ²ãÃæÆÁ±Î²»Í¬²Ù×÷ϵͳÔڵײãÓ²¼þÓëÖ¸ÁîÉϵÄÇø±ð£¬Ò²¾ÍÊÇ¿çÆ½Ì¨µÄÓÉÀ´¡£

˵µ½ÕâÀïͬѧÃÇ¿ÉÄÜ»¹ÊÇÓе㲻̫Ã÷°×£¬ËµµÄ»¹ÊÇÌ«ºê¹ÛÁË£¬ÄÇÎÒÃÇÀ´Á˽âÏÂjavaÐéÄâ»úµÄ×é³É¡£

¶þ¡¢ÐéÄâ»ú×é³É

.Õ»

ÎÒÃÇÏȽ²Ò»ÏÂÆäÖеÄÒ»¿éÄÚ´æÇøÓòÕ»£¬´ó¼Ò¶¼ÖªµÀÕ»ÊÇ´æ´¢¾Ö²¿±äÁ¿µÄ£¬Ò²ÊÇÏ̶߳ÀÓеÄÇøÓò£¬Ò²¾ÍÊÇÿһ¸öÏ̶߳¼»áÓÐ×Ô¼º¶ÀÁ¢µÄÕ»ÇøÓò¡£

public class Math {
public static int initData = 666;
public static User user = new User();

public int compute() {
int a = 1;
int b = 2;
int c = (a+b) * 10;
return c;
}

public static void main(String[] args) {
Math math = new Math();
math.compute();
System.out.println("test");
}
}

˵ÆðÕ»´ó¼Ò¶¼²»»áİÉú£¬Êý¾Ý½á¹¹ÖоÍÓÐѧ£¬ÕâÀïÏß³ÌÕ»Öд洢Êý¾ÝµÄ²¿·ÖʹÓõľÍÊÇÕ»£¬ÏȽøºó³ö¡£

´ó¼Ò¶¼ÖªµÀÿ¸ö·½·¨¶¼ÓÐ×Ô¼ºµÄ¾Ö²¿±äÁ¿£¬±ÈÈçÉÏͼÖÐmain·½·¨ÖеÄmath£¬compute·½·¨ÖеÄa b c£¬ÄÇôjavaÐéÄâ»úΪÁËÇø·Ö²»Í¬·½·¨Öоֲ¿±äÁ¿×÷ÓÃÓò·¶Î§µÄÄÚ´æÇøÓò£¬Ã¿¸ö·½·¨ÔÚÔËÐеÄʱºò¶¼»á·ÖÅäÒ»¿é¶ÀÁ¢µÄÕ»Ö¡ÄÚ´æÇøÓò£¬ÎÒÃÇÊÔ×Ű´ÉÏͼÖеijÌÐòÀ´¼òµ¥»­Ò»Ï´úÂëÖ´ÐеÄÄÚ´æ»î¶¯¡£

Ö´ÐÐmain·½·¨ÖеĵÚÒ»ÐдúÂëÊÇ£¬Õ»Öлá·ÖÅämain()·½·¨µÄÕ»Ö¡£¬²¢´æ´¢math¾Ö²¿±äÁ¿,£¬½Ó×ÅÖ´ÐÐcompute()·½·¨£¬ÄÇôջÓÖ»á·ÖÅäcompute()µÄÕ»Ö¡ÇøÓò¡£

ÕâÀïµÄÕ»´æ´¢Êý¾ÝµÄ·½Ê½ºÍÊý¾Ý½á¹¹ÖÐѧϰµÄÕ»ÊÇÒ»ÑùµÄ£¬ÏȽøºó³ö¡£µ±compute()·½·¨Ö´ÐÐÍêÖ®ºó£¬¾Í»á³öÕ»±»ÊÍ·Å£¬Ò²¾Í·ûºÏÏȽøºó³öµÄÌØµã£¬ºóµ÷Óõķ½·¨ÏȳöÕ»¡£

Õ»Ö¡

ÄÇôջ֡ÄÚ²¿Æäʵ²»Ö»ÊÇ´æ·Å¾Ö²¿±äÁ¿µÄ£¬Ëü»¹ÓÐһЩ±ðµÄ¶«Î÷£¬Ö÷ÒªÓÉËĸö²¿·Ö×é³É¡£

ÄÇôҪ½²Õâ¸ö¾Í»áÉæ¼°µ½¸üµ×²ãµÄÔ­Àí--×Ö½ÚÂë¡£ÎÒÃÇÏÈ¿´ÏÂÎÒÃÇÉÏÃæ´úÂëµÄ×Ö½ÚÂëÎļþ¡£

¿´×žÍÊÇÒ»¸ö16×Ö½ÚµÄÎļþ£¬¿´×ÅÏñÂÒÂ룬Æäʵÿ¸ö¶¼ÊÇÓжÔÓ¦µÄº¬ÒåµÄ£¬oracle¹Ù·½ÊÇÓÐרÃŵÄjvm×Ö½ÚÂëÖ¸ÁîÊÖ²áÀ´²éѯÿ×éÖ¸Áî¶ÔÓ¦µÄº¬ÒåµÄ¡£ÄÇÎÒÃÇÑо¿µÄ£¬µ±È»²»ÊÇÕâ¸ö¡£

jdkÓÐ×Ô´øÒ»¸öjavapµÄÃüÁ¿ÉÒÔ½«ÉÏÊöclassÎļþÉú³ÉÒ»ÖÖ¸ü¿É¶ÁµÄ×Ö½ÚÂëÎļþ¡£

ÎÒÃÇʹÓÃjavap -cÃüÁclassÎļþ·´±àÒë²¢Êä³öµ½TXTÎļþÖС£

Compiled from "Math.java"
public class com.example.demo.test1.Math {
public static int initData;

public static com.example.demo.bean.User user;

public com.example.demo.test1.Math();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return

public int compute();
Code:
0: iconst_1
1: istore_1
2: iconst_2
3: istore_2
4: iload_1
5: iload_2
6: iadd
7: bipush 10
9: imul
10: istore_3
11: iload_3
12: ireturn

public static void main (java.lang.String[]);
Code:
0: new #2 // class com /example/demo/test1/Math
3: dup
4: invokespecial #3 // Method "<init>":()V
7: astore_1
8: aload_1
9: invokevirtual #4 // Method compute:()I
12: pop
13: getstatic #5 // Field java/lang/System.out: Ljava/io/PrintStream;
16: ldc #6 // String test
18: invokevirtual #7 // Method java/io/PrintStream.println: (Ljava/lang/String;)V
21: return

static {};
Code:
0: sipush 666
3: putstatic #8 // Field initData:I
6: new #9 // class com/example/demo/bean/User
9: dup
10: invokespecial #10 // Method com/example/demo/bean/User."<init>":()V
13: putstatic #11 // Field user: Lcom/example/demo/bean/User;
16: return
}

 

´ËʱµÄjvmÖ¸ÁîÂë¾ÍÇåÎúºÜ¶àÁË£¬´óÌå½á¹¹ÊÇ¿ÉÒÔ¿´¶®µÄ£¬Àà¡¢¾²Ì¬±äÁ¿¡¢¹¹Ôì·½·¨¡¢compute()·½·¨¡¢main()·½·¨¡£

ÆäÖз½·¨ÖеÄÖ¸ÁÊÇÓеã㣬ÎÒÃǾÙcompute()·½·¨À´¿´Ò»Ï£º

Code:
0: iconst_1
1: istore_1
2: iconst_2
3: istore_2
4: iload_1
5: iload_2
6: iadd
7: bipush 10
9: imul
10: istore_3
11: iload_3
12: ireturn

Õ⼸ÐдúÂë¾ÍÊǶÔÓ¦µÄÎÒÃÇ´úÂëÖÐcompute()·½·¨ÖеÄËÄÐдúÂë¡£´ó¼Ò¶¼ÖªµÀÔ½µ×²ãµÄ´úÂ룬´úÂëʵÏÖµÄÐÐÊýÔ½¶à£¬ÒòΪËû»á°üº¬Ò»Ð©java´úÂëÔÚÔËÐÐʱµ×²ãÒþ²ØµÄһЩϸ½ÚÔ­Àí¡£

ÄÇôһÑùµÄ£¬Õâ¸öjvmÖ¸Áî¹Ù·½Ò²ÊÇÓÐÊÖ²á¿ÉÒÔ²éÔĵģ¬ÍøÉÏÒ²Óкܶ෭Òë°æ±¾£¬´ó¼ÒÈç¹ûÏëÁ˽â¿É×ÔÐаٶȡ£

ÕâÀïÎÒÖ»½²½â±¾²©ÎÄÉè¼Æ´úÂëÖеIJ¿·ÖÖ¸ÁÒ壺

0. ½«intÀàÐͳ£Á¿1ѹÈë²Ù×÷ÊýÕ»

0: iconst_1

ÕâÒ»²½ºÜ¼òµ¥£¬¾ÍÊǽ«1ѹÈë²Ù×÷ÊýÕ»

1. ½«intÀàÐÍÖµ´æÈë¾Ö²¿±äÁ¿1

1: istore_1

¾Ö²¿±äÁ¿1£¬ÔÚÎÒÃÇ´úÂëÖÐÒ²¾ÍÊǵÚÒ»¸ö¾Ö²¿±äÁ¿a£¬ÏȸøaÔÚ¾Ö²¿±äÁ¿±íÖзÖÅäÄڴ棬Ȼºó½«intÀàÐ͵ÄÖµ£¬Ò²¾ÍÊÇĿǰΨһµÄÒ»¸ö1´æÈë¾Ö²¿±äÁ¿a

2. ½«intÀàÐͳ£Á¿2ѹÈë²Ù×÷ÊýÕ»

2: iconst_2

3. ½«intÀàÐÍÖµ´æÈë¾Ö²¿±äÁ¿2

3: istore_2

ÕâÁ½ÐдúÂë¾ÍºÍǰÁ½ÐÐÀàËÆÁË¡£

4. ´Ó¾Ö²¿±äÁ¿1ÖÐ×°ÔØintÀàÐÍÖµ

4: iload_1

5. ´Ó¾Ö²¿±äÁ¿2ÖÐ×°ÔØintÀàÐÍÖµ

5: iload_2

ÕâÁ½¸ö´úÂëÊǽ«¾Ö²¿±äÁ¿1ºÍ2£¬Ò²¾ÍÊÇaºÍbµÄÖµ×°ÔØµ½²Ù×÷ÊýÕ»ÖÐ

6. Ö´ÐÐintÀàÐ͵ļӷ¨

6: iadd

iaddÖ¸ÁîÒ»Ö´ÐУ¬»á½«²Ù×÷ÊýÕ»ÖеÄ1ºÍ2ÒÀ´Î´ÓÕ»µ×µ¯³ö²¢Ïà¼Ó£¬È»ºó°ÑÔËËã½á¹û3ÔÚѹÈë²Ù×÷ÊýÕ»µ×¡£

7. ½«Ò»¸ö8λ´ø·ûºÅÕûÊýѹÈëÕ»

7: bipush 10

Õâ¸öÖ¸Áî¾ÍÊǽ«10ѹÈëÕ»

8. Ö´ÐÐintÀàÐ͵ij˷¨

9: imul

ÕâÀï¾ÍÀàËÆÉÏÃæµÄ¼Ó·¨ÁË£¬½«3ºÍ10µ¯³öÕ»£¬°Ñ½á¹û30ѹÈëÕ»

9. ½«½«intÀàÐÍÖµ´æÈë¾Ö²¿±äÁ¿3

10: istore_3

ÕâÀï´ó¼Ò¾Í²»Ä°ÉúÁ˰ɣ¬ºÍµÚ¶þ²½µÚÈý²½ÊÇÒ»ÑùµÄ£¬½«30´æÈë¾Ö²¿±äÁ¿3£¬Ò²¾ÍÊÇc

10. ´Ó¾Ö²¿±äÁ¿3ÖÐ×°ÔØintÀàÐÍÖµ

11: iload_3

Õâ¸öÇ°ÃæÒ²ËµÁË

11. ·µ»ØintÀàÐÍÖµ

12: ireturn

Õâ¸ö¾Í²»Óöà˵ÁË£¬¾ÍÊǽ«²Ù×÷ÊýÕ»ÖеÄ30·µ»Ø

µ½ÕâÀï¾Í°ÑÎÒÃÇcompute()·½·¨½²½âÍêÁË£¬½²ÍêÓÐûÓжԾֲ¿±äÁ¿±íºÍ²Ù×÷ÊýÕ»µÄÀí½âÓÐËù¼ÓÉîÄØ£¿Ëµ°×Á˸³ÖµºÅ=ºóÃæµÄ¾ÍÊDzÙ×÷Êý£¬ÔÚÕâЩ²Ù×÷Êý½øÐи³Öµ£¬ÔËËãµÄʱºòÐèÒªÄÚ´æ´æ·Å£¬ÄǾÍÊÇ´æ·ÅÔÚ²Ù×÷ÊýÕ»ÖУ¬×÷ΪÁÙʱ´æ·Å²Ù×÷ÊýµÄһС¿éÄÚ´æÇøÓò¡£

½ÓÏÂÀ´ÎÒÃÇÔÙ˵˵·½·¨³ö¿Ú¡£

·½·¨³ö¿Ú˵°×Á˲»¾ÍÊÇ·½·¨Ö´ÐÐÍêÁËÖ®ºóÒª³öµ½ÄÄÀÄÇôÎÒÃÇÖªµÀÉÏÃæcompute()·½·¨Ö´ÐÐÍêÖ®ºóÓ¦¸Ã»Øµ½main()·½·¨µÚÈýÐÐÄÇôµ±main()·½·¨µ÷ÓÃcompute()µÄʱºò£¬compute()Õ»Ö¡Öеķ½·¨³ö¿Ú¾Í´æ´¢Á˵±Ç°Òª»Øµ½µÄλÖã¬ÄÇôµ±compute()·½·¨Ö´ÐÐÍêÖ®ºó£¬»á¸ù¾Ý·½·¨³ö¿ÚÖд洢µÄÏà¹ØÐÅÏ¢»Øµ½main()·½·¨µÄÏàӦλÖá£

ÄÇômain()·½Í¬ÑùÓÐ×Ô¼ºµÄÕ»Ö¡£¬ÔÚÕâÀïÓÐЩ²»Í¬µÄµØ·½ÎÒÃǽ²Ò»Ï¡£

ÎÒÃÇÉÏÃæÒѾ­ÖªµÀ¾Ö²¿±äÁ¿»á´æ·ÅÔÚÕ»Ö¡Öеľֲ¿±äÁ¿±íÖУ¬ÄÇômain()·½·¨ÖеÄmath»á´æÈëÆäÖУ¬µ«ÊÇÕâÀïµÄmathÊÇÒ»¸ö¶ÔÏó£¬ÎÒÃÇÖªµÀnew³öÀ´µÄ¶ÔÏóÊÇ´æ·ÅÔÚ¶ÑÖеÄ

ÄÇôÕâ¸ömath±äÁ¿ºÍ¶ÑÖеĶÔÏóÓÐʲôÁªÏµÄØ£¿ÊÇͬһ¸ö¸ÅÄîô£¿

µ±È»²»Êǵ쬾ֲ¿±äÁ¿±íÖеÄmath´æ´¢µÄÊǶÑÖÐÄǸömath¶ÔÏóÔÚ¶ÑÖеÄÄÚ´æµØÖ·

2.³ÌÐò¼ÆÊýÆ÷

³ÌÐò¼ÆÊýÆ÷Ò²ÊÇÏß³Ì˽ÓеÄÇøÓò£¬Ã¿¸öÏ̶߳¼»á·ÖÅä³ÌÐò¼ÆÊýÆ÷µÄÄڴ棬ÊÇÓÃÀ´´æ·Åµ±Ç°Ïß³ÌÕýÔÚÔËÐлòÕß¼´½«ÒªÔËÐеÄjvmÖ¸ÁîÂë¶ÔÓ¦µÄµØÖ·£¬»òÕß˵ÐкÅλÖá£

ÉÏÊö´úÂëÖÐÿ¸öÖ¸ÁîÂëÇ°Ãæ¶¼ÓÐÒ»¸öÐкţ¬Äã¾Í¿ÉÒÔ°ÑËü¿´×÷µ±Ç°Ïß³ÌÖ´Ðе½Ä³Ò»ÐдúÂëλÖõÄÒ»¸ö±êʶ£¬Õâ¸öÖµ¾ÍÊdzÌÐò¼ÆÊýÆ÷µÄÖµ¡£

ÄÇôjvmÐéÄâ»úΪʲôҪÉèÖóÌÐò¼ÆÊýÆ÷Õâ¸ö½á¹¹ÄØ£¿¾ÍÊÇΪÁ˶àÏ̵߳ijöÏÖ£¬¶àÏß³ÌÖ®¼äµÄÇл»£¬µ±Ò»¸ö³ÌÐò±»¹ÒÆðµÄʱºò£¬×ÜÊÇÒª»Ö¸´µÄ£¬ÄÇô»Ö¸´µ½ÄĸöλÖÃÄØ£¬×ܲ»ÄÜÓÖÖØÐ¿ªÊ¼Ö´Ðаɣ¬ÄÇô³ÌÐò¼ÆÊýÆ÷¾Í½â¾öÁËÕâ¸öÎÊÌâ¡£

3.·½·¨Çø

ÔÚjdk1.8֮ǰ£¬ÓÐÒ»¸öÃû³Æ½Ð×ö³Ö¾Ã´ø/ÓÀ¾Ã´ú£¬ºÜ¶àͬѧӦ¸ÃÌý¹ý£¬ÔÚjdk1.8Ö®ºó£¬oracle¹Ù·½¸ÄÃûΪԪ¿Õ¼ä¡£´æ·Å³£Á¿¡¢¾²Ì¬±äÁ¿¡¢ÀàÔªÐÅÏ¢¡£

public static int initData = 666;

Õâ¸öinitData¾ÍÊǾ²Ì¬±äÁ¿£¬ÎãÓ¹ÖÃÒÉÊÇ´æ·ÅÔÚ·½·¨ÇøµÄ

public static User user = new User();

ÄÇôÕâ¸öuser¾ÍÓе㲻һÑùÁË£¬user±äÁ¿·ÅÔÚ·½·¨Çø£¬newµÄUserÊÇ´æ·ÅÔÚ¶ÑÖеÄ

µ½ÕâÀïÎÒÃǾÍÄÜÒâʶµ½Õ»£¬¶Ñ£¬·½·¨ÇøÖ®¼ä¶¼ÊÇÓÐÁªÏµµÄ¡£

Õ»Öеľֲ¿±äÁ¿£¬·½·¨ÇøÖеľ²Ì¬±äÁ¿£¬Èç¹ûÊǶÔÏóÀàÐ͵ϰ¶¼»áÖ¸Ïò¶ÑÖÐnew³öÀ´ÖеĶÔÏó£¬ÄÇôºìÉ«µÄÁªÏµ´ú±íÊ²Ã´ÄØ£¿ÎÒÃÇÏÈÀ´Á˽âһ϶ÔÏó¡£

¶ÔÏó×é³É

Äã¶Ô¶ÔÏóµÄÁ˽âÓжàÉÙÄØ£¬ÌìÌìÓöÔÏó£¬ÄãÊÇ·ñÖªµÀ¶ÔÏóÔÚÐéÄâ»úÖеĴ洢½á¹¹ÄØ£¿

¶ÔÏóÔÚÄÚ´æÖд洢µÄ²¼¾Ö¿ÉÒÔ·ÖΪ3¿éÇøÓò£º¶ÔÏóÍ·£¨Header£©¡¢ÊµÀýÊý¾Ý£¨Instance Data£©ºÍ¶ÔÆëÌî³ä£¨Padding£©¡£ÏÂͼÊÇÆÕͨ¶ÔÏóʵÀýÓëÊý×é¶ÔÏóʵÀýµÄÊý¾Ý½á¹¹£º

¶ÔÏóÍ·

HotSpotÐéÄâ»úµÄ¶ÔÏóÍ·°üÀ¨Á½²¿·ÖÐÅÏ¢£º

Mark Word

µÚÒ»²¿·Ömarkword,ÓÃÓÚ´æ´¢¶ÔÏó×ÔÉíµÄÔËÐÐʱÊý¾Ý£¬Èç¹þÏ£Â루HashCode£©¡¢GC·Ö´úÄêÁä¡¢Ëø×´Ì¬±êÖ¾¡¢Ï̳߳ÖÓеÄËø¡¢Æ«ÏòÏß³ÌID¡¢Æ«Ïòʱ¼ä´ÁµÈ£¬Õⲿ·ÖÊý¾ÝµÄ³¤¶ÈÔÚ32λºÍ64λµÄÐéÄâ»ú£¨Î´¿ªÆôѹËõÖ¸Õ룩ÖзֱðΪ32bitºÍ64bit£¬¹Ù·½³ÆËüΪ¡°MarkWord¡±¡£

Klass Pointer

¶ÔÏóÍ·µÄÁíÍâÒ»²¿·ÖÊÇklassÀàÐÍÖ¸Õ룬¼´¶ÔÏóÖ¸ÏòËüµÄÀàÔªÊý¾ÝµÄÖ¸Õ룬ÐéÄâ»úͨ¹ýÕâ¸öÖ¸ÕëÀ´È·¶¨Õâ¸ö¶ÔÏóÊÇÄĸöÀàµÄʵÀý.

Êý×鳤¶È£¨Ö»ÓÐÊý×é¶ÔÏóÓУ©

Èç¹û¶ÔÏóÊÇÒ»¸öÊý×é, ÄÇÔÚ¶ÔÏóÍ·Öл¹±ØÐëÓÐÒ»¿éÊý¾ÝÓÃÓڼǼÊý×鳤¶È.

ʵÀýÊý¾Ý

ʵÀýÊý¾Ý²¿·ÖÊǶÔÏóÕæÕý´æ´¢µÄÓÐЧÐÅÏ¢£¬Ò²ÊÇÔÚ³ÌÐò´úÂëÖÐËù¶¨ÒåµÄ¸÷ÖÖÀàÐ͵Ä×Ö¶ÎÄÚÈÝ¡£ÎÞÂÛÊÇ´Ó¸¸Àà¼Ì³ÐÏÂÀ´µÄ£¬»¹ÊÇÔÚ×ÓÀàÖж¨ÒåµÄ£¬¶¼ÐèÒª¼Ç¼ÆðÀ´¡£

¶ÔÆëÌî³ä

µÚÈý²¿·Ö¶ÔÆëÌî³ä²¢²»ÊDZØÈ»´æÔڵģ¬Ò²Ã»ÓÐÌØ±ðµÄº¬Ò壬Ëü½ö½öÆð×Åռλ·ûµÄ×÷Óá£ÓÉÓÚHotSpot VMµÄ×Ô¶¯ÄÚ´æ¹ÜÀíϵͳҪÇó¶ÔÏóÆðʼµØÖ·±ØÐëÊÇ8×Ö½ÚµÄÕûÊý±¶£¬»»¾ä»°Ëµ£¬¾ÍÊǶÔÏóµÄ´óС±ØÐëÊÇ8×Ö½ÚµÄÕûÊý±¶¡£¶ø¶ÔÏóÍ·²¿·ÖÕýºÃÊÇ8×ֽڵı¶Êý£¨1±¶»òÕß2±¶£©£¬Òò´Ë£¬µ±¶ÔÏóʵÀýÊý¾Ý²¿·ÖûÓÐ¶ÔÆëʱ£¬¾ÍÐèҪͨ¹ý¶ÔÆëÌî³äÀ´²¹È«¡£

ÆäÖеÄklassÀàÐÍÖ¸Õë¾ÍÊÇÄÇÌõºìÉ«µÄÁªÏµ£¬ÄÇÊÇÔõôÁªÏµµÄÄØ£¿

new Thread().start();

 

ͼƬ

Àà¼ÓÔØÆäʵ×îÖÕÊÇÒÔÀàÔªÐÅÏ¢µÄÐÎʽ´æ´¢ÔÚ·½·¨ÇøÖеģ¬mathºÍmath2¶¼ÊÇÓÉͬһ¸öÀànew³öÀ´µÄ£¬µ±¶ÔÏó±»newʱ£¬¶¼»áÔÚ¶ÔÏóÍ·Öд洢һ¸öÖ¸ÏòÀàÔªÐÅÏ¢µÄÖ¸Õ룬Õâ¾ÍÊÇKlass Pointer.

µ½ÕâÀïÎÒÃǾͽ²½âÁËÕ»£¬³ÌÐò¼ÆÊýÆ÷ºÍ·½·¨Çø£¬ÏÂÃæÎÒÃǼòµ¥½éÉÜһϱ¾µØ·½·¨Çø£¬×îºóÔÙÖյ㽲½â¶Ñ¡£

4.±¾µØ·½·¨Õ»

ʵ¼ÊÉÏÏÖÔÚ±¾µØ·½·¨Õ»ÒѾ­ÓõıȽÏÉÙÁË£¬´ó¼ÒÓ¦¸Ã¶¼ÓÐÌý¹ý±¾µØ·½·¨°É

ÈçºÎ¾­³£ÓõÄÏß³ÌÀà

new Thread().start();

 

public synchronized void start() {
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
boolean started = false;
try {
start0();
started = true;
} finally {
try {
if (!started) {
group.threadStartFailed(this);
}
} catch (Throwable ignore) {
}
}
}

ÆäÖеײãµ÷ÓÃÁËÒ»¸östart0()µÄ·½·¨

private native void start0();

Õâ¸ö·½·¨Ã»ÓÐʵÏÖ£¬µ«ÓÖ²»Êǽӿڣ¬ÊÇʹÓÃnativeÐÞÊεģ¬ÊÇÊôÓÚ±¾µØ·½·¨£¬µ×²ãͨ¹ýCÓïÑÔʵÏֵģ¬ÄÇjava´úÂëÀïΪʲô»áÓÐCÓïÑÔʵÏֵı¾µØ·½·¨ÄØ£¿

´ó¼Ò¶¼ÖªµÀJAVAÊÇÎÊÊÀµÄ£¬ÔÚÄÇ֮ǰһ¸ö¹«Ë¾µÄϵͳ°Ù·ÖÖ®¾ÅÊ®¾Å¶¼ÊÇʹÓÃCÓïÑÔʵÏֵ쬵«ÊÇjava³öÏֺ󣬺ܶàÏîÄ¿¶¼Òª×ªÎªjava¿ª·¢£¬ÄÇôÐÂϵͳºÍ¾Éϵͳ¾ÍÃâ²»ÁËÒªÓн»»¥£¬ÄÇô¾ÍÐèÒª±¾µØ·½·¨À´ÊµÏÖÁË£¬µ×²ãÊǵ÷ÓÃCÓïÑÔÖеÄdll¿âÎļþ£¬¾ÍÀàËÆÓÚjavaÖеÄjar°ü£¬µ±È»£¬Èç½ñ¿çÓïÑԵĽ»»¥·½Ê½¾ÍºÜ¶àÁË£¬±ÈÈçthrift£¬http½Ó¿Ú·½Ê½£¬webserviceµÈ£¬µ±Ê±²¢Ã»ÓÐÕâЩ·½Ê½£¬¾ÍÖ»ÄÜͨ¹ý±¾µØ·½·¨À´ÊµÏÖÁË¡£

ÄÇô±¾µØ·½·¨Ê¼ÖÕÒ²ÊÇ·½·¨£¬Ã¿¸öÏß³ÌÔÚÔËÐеÄʱºò£¬Èç¹ûÓÐÔËÐе½±¾µØ·½·¨£¬ÄÇô±ØÈ»Ò²Òª²úÉú¾Ö²¿±äÁ¿µÈ£¬ÄÇô¾ÍÐèÒª´æ´¢ÔÚ±¾µØ·½·¨Õ»ÁË¡£Èç¹ûûÓб¾µØ·½·¨£¬Ò²¾ÍûÓб¾µØ·½·¨Õ»ÁË¡£

5.¶Ñ

×îºóÎÒÃǽ²¶Ñ£¬¶ÑÊÇ×îÖØÒªµÄÒ»¿éÄÚ´æÇøÓò£¬ÎÒÏàÐŴ󲿷ÖÈ˶ԶѶ¼²»Ä°Éú¡£µ«ÊǶÔÓÚËüµÄÄÚ²¿½á¹¹£¬ÔË×÷ϸ½ÚÏëÒª¸ãÇå³þҲûÄÇô¼òµ¥¡£

¶ÔÓÚÕâ¸ö»ù±¾×é³É´ó¼ÒÓ¦¸Ã¶¼ÓÐËùÁ˽⣬¶Ô¾ÍÊÇÓÉÄêÇá´úºÍÀÏÄê´ú×é³É£¬ÄêÇá´úÓÖ·ÖΪÒÁµéÔ°ÇøºÍsurvivorÇø£¬survivorÇøÖÐÓÖÓÐfromÇøºÍtoÇø.

ÎÒÃÇnew³öÀ´µÄ¶ÔÏó´ó¼Ò¶¼ÖªµÀÊÇ·ÅÔÚ¶ÑÖУ¬ÄǾßÌå·ÅÔÚ¶ÑÖеÄÄĸöλÖÃÄØ£¿

Æäʵnew³öÀ´µÄ¶ÔÏóÒ»°ã¶¼·ÅÔÚEdenÇø£¬ÄÇôΪʲô½ÐÒÁµéÔ°ÇøÄØ£¬ÒÁµéÔ°¾ÍÊÇÑǵ±ÏÄÍÞסµÄµØ·½£¬²»¾ÍÊÇÔìÈ˵ĵط½Ã´£¿ËùÒÔÎÒÃÇnew³öÀ´µÄ¶ÔÏó¾ÍÊÇ·ÅÔÚÕâÀïµÄ£¬Äǵ±EdenÇøÂúÁËÖ®ºóÄØ£¿

¼ÙÉèÎÒÃǸø¶Ô·ÖÅä600MÄڴ棬Õâ¸öÊÇ¿ÉÒÔͨ¹ý²ÎÊýµ÷½ÚµÄ£¬ÎÒÃǺóÎÄÔÙ½²¡£ÄÇôÀÏÄê´úĬÈÏÊÇÕ¼2/3µÄ£¬Ò²¾ÍÊDz¶à400M£¬ÄÇÄêÇá´ú¾ÍÊÇ200M£¬EdenÇø160M£¬SurvivorÇø40M¡£

GC

Ò»¸ö³ÌÐòÖ»ÒªÔÚÔËÐУ¬ÄÇô¾Í²»»á²»Í£µÄnew¶ÔÏó£¬ÄÇô×ÜÓÐÒ»¿ÌEdenÇø»á·ÅÂú£¬ÄÇôһµ©EdenÇø±»·ÅÂúÖ®ºó£¬ÐéÄâ»ú»á¸ÉÊ²Ã´ÄØ£¿Ã»´í£¬¾ÍÊÇgc£¬²»¹ýÕâÀïµÄgcÊôÓÚminor gc£¬¾ÍÊÇÀ¬»øÊÕ¼¯£¬À´ÊÕ¼¯À¬»ø¶ÔÏó²¢ÇåÀíµÄ£¬ÄÇôʲôÊÇÀ¬»ø¶ÔÏóÄØ£¿

ºÃ±ÈÎÒÃÇÉÏÃæËµµÄmath¶ÔÏó£¬ÎÒÃǼÙÉèÎÒÃÇÊÇÒ»¸öwebÓ¦ÓóÌÐò£¬mainÏß³ÌÖ´ÐÐÍêÖ®ºó³ÌÐò²»»á½áÊø£¬µ«ÊÇmain·½·¨½áÊøÁË£¬ÄÇômain()·½·¨Õ»Ö¡»á±»ÊÍ·Å£¬¾Ö²¿±äÁ¿»á±»ÊÍ·Å£¬µ«ÊǾֲ¿±äÁ¿¶ÔÓ¦µÄ¶ÑÖеĶÔÏó»¹ÊÇÒÀÈ»´æÔڵ쬵«ÊÇÓÖûÓÐÖ¸ÕëÖ¸ÏòËü£¬ÄÇôËü¾ÍÊÇÒ»¸öÀ¬»ø¶ÔÏó£¬ÄǾÍÓ¦¸Ã±»»ØÊÕµôÁË£¬Ö®ºóÈç¹û»¹»ánew Math¶ÔÏó£¬Ò²²»»áÓÃÕâ¸ö֮ǰµÄÁË£¬ÒòΪÒѾ­ÎÞ·¨ÕÒµ½ËüÁË£¬Èç¹ûÁô×ÅÕâ¸ö¶ÔÏóÖ»»áÕ¼ÓÃÄڴ棬ÏÔÈ»ÊDz»ºÏÊʵġ£

ÕâÀï¾ÍÉæ¼°µ½ÁËÒ»¸öGC Root¸ùÒÔ¼°¿É´ïÐÔ·ÖÎöËã·¨µÄ¸ÅÄҲÊÇÃæÊÔż¶û»á±»Îʵ½µÄ¡£

¿É´ïÐÔ·ÖÎöËã·¨Êǽ«GC Roots¶ÔÏó×÷ΪÆðµã£¬´ÓÕâЩÆðµã¿ªÊ¼ÏòÏÂËÑË÷ÒýÓõĶÔÏó£¬ÕÒµ½µÄ¶ÔÏó¶¼±ê¼ÇΪ·ÇÀ¬»ø¶ÔÏ󣬯äÓàδ±ê¼ÇµÄ¶¼ÊÇÀ¬»ø¶ÔÏó¡£

ÄÇôGC Roots¸ù¶ÔÏóÓÖÊÇÊ²Ã´ÄØ£¬GC Roots¸ù¾ÍÊÇÅжÏÒ»¸ö¶ÔÏóÊÇ·ñ¿ÉÒÔ»ØÊÕµÄÒÀ¾Ý£¬Ö»ÒªÄÜͨ¹ýGC Roots¸ùÏòÏÂÒ»Ö±ËÑË÷ÄÜËÑË÷µ½µÄ¶ÔÏó£¬ÄÇôÕâ¸ö¶ÔÏó¾Í²»ËãÀ¬»ø¶ÔÏ󣬶ø¿ÉÒÔ×÷ΪGC Roots¸ùµÄÓÐÏß³ÌÕ»µÄ±¾µØ±äÁ¿£¬¾²Ì¬±äÁ¿£¬±¾µØ·½·¨Õ»µÄ±äÁ¿µÈµÈ£¬Ëµ°×Á˾ÍÊÇÕÒµ½ºÍ¸ù½ÚµãÓÐÁªÏµµÄ¶ÔÏó¾ÍÊÇÓÐÓõĶÔÏ󣬯äÓà¶¼ÈÏΪÊÇÀ¬»ø¶ÔÏóÀ´»ØÊÕ¡£

¾­ÀúÁ˵ÚÒ»´Îminor gcºó£¬Ã»Óб»ÇåÀíµÄ¶ÔÏó¾Í»á±»ÒƵ½FromÇø£¬ÈçÉÏͼ¡£

ÉÏÃæÔÚ˵¶ÔÏó×é³ÉµÄʱºòÓÐдµ½£¬ÔÚ¶ÔÏóÍ·µÄMark WordÖÐÓд洢GC·Ö´úÄêÁ䣬һ¸ö¶ÔÏóÿ¾­ÀúÒ»´Îgc£¬ÄÇôËüµÄgc·Ö´úÄêÁä¾Í»á+1£¬ÈçÉÏͼ¡£

ÄÇôÈç¹ûµÚ¶þ´ÎеĶÔÏóÓÖ°ÑEdenÇø·ÅÂúÁË£¬ÄÇôÓÖ»áÖ´ÐÐminor gc£¬µ«ÊÇÕâ´Î»áÁ¬×ÅFromÇøÒ»Æðgc£¬È»ºó½«EdenÇøºÍFromÇø´æ»îµÄ¶ÔÏó¶¼ÒƵ½ToÇøÓò£¬¶ÔÏóÍ·ÖзִúÄêÁä¶¼+1£¬ÈçÉÏͼ¡£

ÄÇôµ±µÚÈý´ÎEdenÇøÓÖÂúµÄʱºò£¬minor gc¾ÍÊÇ»ØÊÕEdenÇøºÍToÇøÓòÁË£¬TEdenÇøºÍToÇøÓò»¹»î×ŵĶÔÏó¾Í»á¶¼ÒƵ½FromÇø£¬ÈçÉÏͼ¡£Ëµ°×Á˾ÍÊÇSurvivorÇøÖÐ×ÜÓÐÒ»¿éÇøÓòÊÇ¿Õ×ŵ쬴æ»îµÄ¶ÔÏó´æ·ÅÊÇÔÚFromÇøºÍToÇøÂÖÁ÷´æ·Å£¬Ò²¾ÍÊÇ»¥Ïà¸´ÖÆ¿½±´£¬ÕâÒ²¾ÍÊÇÀ¬»ø»ØÊÕËã·¨Öеĸ´ÖÆ-»ØÊÕËã·¨¡£

Èç¹ûÒ»¸ö¶ÔÏó¾­ÀúÁËÒ»¸öÏÞÖµ15´ÎgcµÄʱºò£¬¾Í»áÒÆÖÁÀÏÄê´ú¡£ÄÇÈç¹û»¹Ã»Óе½ÏÞÖµ£¬FromÇø»òÕßToÇøÓòÒ²·Å²»ÏÂÁË£¬¾Í»áÖ±½ÓŲµ½ÀÏÄê´ú£¬ÕâÖ»ÊǾÙÀýÁËÁ½ÖÖ³£¹æ¹æÔò£¬»¹ÓÐÆäËû¹æÔòÒ²ÊÇ»á°Ñ¶ÔÏó´æ·ÅÖÁÀÏÄê´úµÄ¡£

ÄÇÃ´Ëæ×ÅÓ¦ÓóÌÐòµÄ²»¶ÏÔËÐУ¬ÀÏÄê´ú×îÖÕÒ²ÊÇ»áÂúµÄ£¬ÄÇô´ËʱҲ»ágc£¬´ËʱµÄgc¾ÍÊÇFull gcÁË¡£

GC°¸Àý

ÏÂÃæÎÒÃÇͨ¹ýÒ»¸ö¼òµ¥µÄÑÝʾ°¸ÀýÀ´¸ü¼ÓÇå³þµÄÁ˽âGC¡£

public class HeapTest {
byte[] a = new byte[1024*100];
public static void main(String[] args) throws InterruptedException {
ArrayList<HeapTest> heapTest = new ArrayList<>();
while(true) {
heapTest.add(new HeapTest());
Thread.sleep(10);
}
}
}

 

Õâ¿é´úÂëºÜÃ÷ÏÔ£¬¾ÍÊÇÒ»¸öËÀÑ­»·£¬²»¶ÏµÄÍùlistÖÐÌí¼Ónew³öÀ´µÄ¶ÔÏó¡£

ÎÒÃÇÕâÀïʹÓÃjdk×Ô´øµÄÒ»¸öjvmµ÷ÓŹ¤¾ßjvisualvmÀ´¹Û²ìÒ»ÏÂÕâ¸ö´úÂëÖ´ÐеĵÄÄÚ´æ½á¹¹¡£

ÔËÐдúÂë´ò¿ªÖ®ºóÎÒÃÇ¿ÉÒÔ¿´µ½ÕâÑùµÄ½çÃæ£º

ÎÒÃÇÔÚ×ó±ßµÄÓ¦ÓóÌÐòÖпÉÒÔ¿´µ½ÎÒÃÇÔËÐеÄÕâ¸ö´úÂ룬ÓÒ±ßÊÇËüµÄһЩjvm£¬ÄÚ´æÐÅÏ¢£¬ÎÒÃÇÕâÀï²»¹Ø×¢£¬ÎÒÃÇÐèÒªÓõ½µÄÊÇ×îºóÒ»¸öVisual GCÃæ°å£¬ÕâÊÇÒ»¸ö²å¼þ£¬Èç¹ûÄãµÄ´ò¿ªÃ»ÓÐÕâÒ»À¸µÄ»°£¬¿ÉÒÔÔÙ¹¤¾ßÀ¸µÄ²å¼þÖнøÐÐÏÂÔØ°²×°¡£

´ò¿ªvisual GC£¬ÎÒÃÇÏÈ¿´Ò»Ï½çÃæ´ó¸ÅµÄ²¼¾Ö£¬

ÆäÖÐÀÏÄê´ú(Olc)£¬ÒÁµéÔ°Çø(Eden)£¬S0(From)£¬S1(To)¼¸¸öÇøÓòµÄÄÚ´æºÍ¶¯Ì¬·ÖÅäͼ¶¼ÊÇÇåÎú¿É¼û£¬ÒÔÒ»¶ÔÓ¦µÄ¡£

ÎÒÃÇÑ¡ÔñÖмäÒ»ÕÅͼ¸ø´ó¼Ò¶ÔÓ¦Ò»ÏÂÉÏÃæËù½²µÄÄÚÈÝ£º

1£º¶ÔÏó·ÅÈëEdenÇø

2£ºEdenÇøÂú·¢Éúminor gc

3£ºµÚ¶þ²½µÄ´æ»î¶ÔÏóÒÆÖÁFrom(Survivor 0)Çø

4£ºEdenÇøÔÙÂú·¢Éúminor gc

5£ºµÚËIJ½´æ»îµÄ¶ÔÏóÒÆÖÁTo(Survivor 1)Çø

ÕâÀï¿ÉÒÔ×¢Òâµ½FromºÍToÇøÓòºÍÎÒÃÇÉÏÃæËùËµÒÆÖÁ£¬×ÜÓÐÒ»¸öÊǿյġ£

´ó¼Ò»¹¿ÉÒÔ×¢Òâµ½ÀÏÄê´úÕâÀ¶¼ÊÇÒ»¶ÎÒ»¶ÎµÄÖ±Ïߣ¬ÖмäÊÇͻȻµÄÔö¼Ó£¬Õâ¾ÍÊÇÔÚminor gcÖÐÒ»ÅúÒ»Åú·ûºÏ¹æÔòµÄ¶ÔÏó±»ÅúÁ¿ÒÆÈëÀÏÄê´ú¡£

Äǵ±ÎÒÃÇÀÏÄê´úÂúÁ˻ᷢÉúÊ²Ã´ÄØ£¿µ±È»ÊÇÎÒÃÇÉÏÃæËµ¹ýµÄFull GC£¬µ«ÊÇÄã×Ðϸ¿´ÎÒÃÇдµÄÕâ¸ö³ÌÐò£¬ÎÒÃÇËùÓÐnew³öÀ´µÄHeapTest¶ÔÏó¶¼ÊÇ´æ·ÅÔÚheapListsÖеģ¬ÄǾͻᱻÕâ¸ö¾Ö²¿±äÁ¿ËùÒýÓã¬ÄÇôFull GC¾Í²»»áÓÐʲôÀ¬»ø¶ÔÏó¿ÉÒÔ»ØÊÕ£¬¿ÉÊÇÄÚ´æÓÖÂúÁË£¬ÄÇÔõô°ì£¿

û´í£¬¾ÍÊÇÎÒÃǾÍËãû¼û¹ýÒ²×ÜÌý¹ýµÄOOM¡£

µ½ÕâÀïjvmÄÚ´æÄ£Ðͼòµ¥½éÉܾͽáÊøÁË£¬¿´µ½ÕâÀﻹ²»µã¸öÔÞÂ

 
   
5937 ´Îä¯ÀÀ       31
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
JavaÐéÄâ»ú¼Ü¹¹
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
JavaÈÝÆ÷Ïê½â
Java½ø½×--ÉîÈëÀí½âArrayListʵÏÖÔ­Àí
Java²¢·¢ÈÝÆ÷£¬µ×²ãÔ­ÀíÉîÈë·ÖÎö
×îпγÌ
java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
SpringBoot&Cloud¡¢JavaSSM¿ò¼Ü
Spring Boot Åàѵ
³É¹¦°¸Àý
¹úÄÚÖªÃûÒøÐÐ Spring+SpringBoot+Cloud+MVC
±±¾© Java±à³Ì»ù´¡ÓëÍøÒ³¿ª·¢»ù´¡
±±¾© Struts+Spring
»ªÏÄ»ù½ð ActiveMQ Ô­Àí
ijÃñº½¹« Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢