±à¼ÍƼö: |
±¾ÎÄÖ÷Òª½²½âÀà¼ÓÔØÆ÷×Óϵͳ
£¬¼ÓÔØ £¬Á´½Ó£¬³õʼ»¯£¬ÔËÐÐʱÊý¾ÝÇø£¬·½·¨Çø£¬¶ÑÇø£¬Õ»ÇøµÈÏ£Íû¶ÔÄúÄÜÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚcsdn£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼ÍƼö |
|
JVM±»·ÖΪÈý¸öÖ÷ÒªµÄ×Óϵͳ£ºÀà¼ÓÔØÆ÷×Óϵͳ¡¢ÔËÐÐʱÊý¾ÝÇø¡¢Ö´ÐÐÒýÇæ

Àà¼ÓÔØÆ÷×Óϵͳ
JavaµÄ¶¯Ì¬Àà¼ÓÔØ¹¦ÄÜÊÇÓÉÀà¼ÓÔØÆ÷×Óϵͳ´¦Àí¡£µ±ËüÔÚÔËÐÐʱ£¨²»ÊDZàÒëʱ£©Ê×´ÎÒýÓÃÒ»¸öÀàʱ£¬Ëü¼ÓÔØ¡¢Á´½Ó²¢³õʼ»¯¸ÃÀàÎļþ¡£
¼ÓÔØ
ÀàÓÉ´Ë×é¼þ¼ÓÔØ¡£Æô¶¯Àà¼ÓÔØÆ÷ (BootStrap class Loader)¡¢À©Õ¹Àà¼ÓÔØÆ÷(Extension class Loader)ºÍÓ¦ÓóÌÐòÀà¼ÓÔØÆ÷(Application class Loader) ÕâÈýÖÖÀà¼ÓÔØÆ÷°ïÖúÍê³ÉÀàµÄ¼ÓÔØ¡£
Æô¶¯Àà¼ÓÔØÆ÷ ¨C ¸ºÔð´ÓÆô¶¯Àà·¾¶ÖмÓÔØÀ࣬Î޷ǾÍÊÇrt.jar¡£Õâ¸ö¼ÓÔØÆ÷»á±»¸³Óè×î¸ßÓÅÏȼ¶
À©Õ¹Àà¼ÓÔØÆ÷ ¨C ¸ºÔð¼ÓÔØext Ŀ¼(jre\lib)ÄÚµÄÀà
Ó¦ÓóÌÐòÀà¼ÓÔØÆ÷ ¨C ¸ºÔð¼ÓÔØÓ¦ÓóÌÐò¼¶±ðÀà·¾¶£¬Éæ¼°µ½Â·¾¶µÄ»·¾³±äÁ¿µÈ
ÉÏÊöµÄÀà¼ÓÔØÆ÷»á×ñÑίÍвã´ÎËã·¨£¨Delegation Hierarchy Algorithm£©¼ÓÔØÀàÎļþ¡£
Á´½Ó
УÑé ¨C ×Ö½ÚÂëУÑéÆ÷»áУÑéÉú³ÉµÄ×Ö½ÚÂëÊÇ·ñÕýÈ·£¬Èç¹ûУÑéʧ°Ü£¬»áµÃµ½Ð£Ñé´íÎó
×¼±¸ ¨C ·ÖÅäÄÚ´æ²¢³õʼ»¯Ä¬ÈÏÖµ¸øËùÓеľ²Ì¬±äÁ¿
½âÎö ¨C ËùÓзûºÅÄÚ´æÒýÓñ»·½·¨Çø(Method Area)µÄÔʼÒýÓÃËùÌæ´ú
³õʼ»¯
ÕâÊÇÀà¼ÓÔØµÄ×îºó½×¶Î£¬ÕâÀïËùÓеľ²Ì¬±äÁ¿»á±»¸³³õʼֵ, ²¢ÇÒ¾²Ì¬¿é½«±»Ö´ÐС£
ÔËÐÐʱÊý¾ÝÇø£¨Runtime Data Area£©
ÔËÐÐʱÊý¾ÝÇøÓò±»»®·ÖΪ5¸öÖ÷Òª×é¼þ£º
·½·¨Çø£¨Method Area£©
ËùÓÐÀ༶±ðÊý¾Ý½«±»´æ´¢ÔÚÕâÀ°üÀ¨¾²Ì¬±äÁ¿¡£Ã¿¸öJVMÖ»ÓÐÒ»¸ö·½·¨Çø£¬ËüÊÇÒ»¸ö¹²ÏíµÄ×ÊÔ´¡£
¶ÑÇø£¨Heap Area£©
ËùÓеĶÔÏóºÍËüÃÇÏàÓ¦µÄʵÀý±äÁ¿ÒÔ¼°Êý×齫±»´æ´¢ÔÚÕâÀÿ¸öJVMͬÑùÖ»ÓÐÒ»¸ö¶ÑÇø¡£ÓÉÓÚ·½·¨ÇøºÍ¶ÑÇøµÄÄÚ´æÓɶà¸öÏ̹߳²Ïí£¬ËùÒÔ´æ´¢µÄÊý¾Ý²»ÊÇḬ̈߳²È«µÄ¡£
Õ»Çø£¨Stack Area£©
¶Ôÿ¸öÏ̻߳ᵥ¶À´´½¨Ò»¸öÔËÐÐʱջ¡£¶Ôÿ¸öº¯Êýºô½Ð»áÔÚÕ»ÄÚ´æÉú³ÉÒ»¸öÕ»Ö¡(Stack Frame)¡£ËùÓеľֲ¿±äÁ¿½«ÔÚÕ»ÄÚ´æÖд´½¨¡£Õ»ÇøÊÇḬ̈߳²È«µÄ£¬ÒòΪËü²»ÊÇÒ»¸ö¹²Ïí×ÊÔ´¡£Õ»Ö¡±»·ÖΪÈý¸ö×ÓʵÌ壺
¾Ö²¿±äÁ¿Êý×é ¨C °üº¬¶àÉÙ¸öÓë·½·¨Ïà¹ØµÄ¾Ö²¿±äÁ¿²¢ÇÒÏàÓ¦µÄÖµ½«±»´æ´¢ÔÚÕâÀï
²Ù×÷ÊýÕ» ¨C Èç¹ûÐèÒªÖ´ÐÐÈκÎÖмä²Ù×÷£¬²Ù×÷ÊýÕ»×÷ΪÔËÐÐʱ¹¤×÷ÇøÈ¥Ö´ÐÐÖ¸Áî
Ö¡Êý¾Ý ¨C ·½·¨µÄËùÓзûºÅ¶¼±£´æÔÚÕâÀï¡£ÔÚÈÎÒâÒì³£µÄÇé¿öÏ£¬catch¿éµÄÐÅÏ¢½«»á±»±£´æÔÚÖ¡Êý¾ÝÀïÃæ

PC¼Ä´æÆ÷
ÿ¸öÏ̶߳¼ÓÐÒ»¸öµ¥¶ÀµÄPC¼Ä´æÆ÷À´±£´æµ±Ç°Ö´ÐÐÖ¸ÁîµÄµØÖ·£¬Ò»µ©¸ÃÖ¸Áî±»Ö´ÐУ¬pc¼Ä´æÆ÷»á±»¸üÐÂÖÁÏÂÌõÖ¸ÁîµÄµØÖ·¡£
±¾µØ·½·¨Õ»
±¾µØ·½·¨Õ»±£´æ±¾µØ·½·¨ÐÅÏ¢¡£¶Ôÿһ¸öỊ̈߳¬½«´´½¨Ò»¸öµ¥¶ÀµÄ±¾µØ·½·¨Õ»¡£
Ö´ÐÐÒýÇæ
·ÖÅ䏸ÔËÐÐʱÊý¾ÝÇøµÄ×Ö½ÚÂ뽫ÓÉÖ´ÐÐÒýÇæÖ´ÐС£Ö´ÐÐÒýÇæ¶ÁÈ¡×Ö½ÚÂë²¢Öð¶ÎÖ´ÐС£
½âÊÍÆ÷
½âÊÍÆ÷ÄÜ¿ìËٵĽâÊÍ×Ö½ÚÂ룬µ«Ö´ÐÐÈ´ºÜÂý¡£ ½âÊÍÆ÷µÄȱµã¾ÍÊÇ,µ±Ò»¸ö·½·¨±»µ÷Óöà´Î£¬Ã¿´Î¶¼ÐèÒªÖØÐ½âÊÍ¡£
±àÒëÆ÷
JIT±àÒëÆ÷Ïû³ýÁ˽âÊÍÆ÷µÄȱµã¡£Ö´ÐÐÒýÇæÀûÓýâÊÍÆ÷ת»»×Ö½ÚÂ룬µ«Èç¹ûÊÇÖØ¸´µÄ´úÂëÔòʹÓÃJIT±àÒëÆ÷½«È«²¿×Ö½ÚÂë±àÒë³É±¾»ú´úÂë¡£±¾»ú´úÂ뽫ֱ½ÓÓÃÓÚÖØ¸´µÄ·½·¨µ÷Óã¬ÕâÌá¸ßÁËϵͳµÄÐÔÄÜ¡£
Öмä´úÂëÉú³ÉÆ÷ ¨C Éú³ÉÖмä´úÂë
´úÂëÓÅ»¯Æ÷ ¨C ¸ºÔðÓÅ»¯ÉÏÃæÉú³ÉµÄÖмä´úÂë
Ä¿±ê´úÂëÉú³ÉÆ÷ ¨C ¸ºÔðÉú³É»úÆ÷´úÂë»ò±¾»ú´úÂë
̽²âÆ÷(Profiler) ¨C Ò»¸öÌØÊâµÄ×é¼þ£¬¸ºÔðѰÕÒ±»¶à´Îµ÷Óõķ½·¨¡£
À¬»ø»ØÊÕÆ÷
ÊÕ¼¯²¢É¾³ýδÒýÓõĶÔÏ󡣿ÉÒÔͨ¹ýµ÷ÓÃ"System.gc()"À´´¥·¢À¬»ø»ØÊÕ£¬µ«²¢²»±£Ö¤»áȷʵ½øÐÐÀ¬»ø»ØÊÕ¡£JVMµÄÀ¬»ø»ØÊÕÖ»ÊÕ¼¯ÄÄЩÓÉnew¹Ø¼ü×Ö´´½¨µÄ¶ÔÏó¡£ËùÒÔ£¬Èç¹û²»ÊÇÓÃnew´´½¨µÄ¶ÔÏó£¬Äã¿ÉÒÔʹÓÃfinalizeº¯ÊýÀ´Ö´ÐÐÇåÀí¡£
Java±¾µØ½Ó¿Ú (JNI)£ºJNI »áÓë±¾µØ·½·¨¿â½øÐн»»¥²¢ÌṩִÐÐÒýÇæËùÐèµÄ±¾µØ¿â¡£±¾µØ·½·¨¿â£ºÊÇÒ»¸öÖ´ÐÐÒýÇæËùÐèµÄ±¾µØ¿âµÄ¼¯ºÏ¡£
|