¹ØÓÚjavaÄÚ´æÐ¹Â©µÄ¾µäÎÄÕ£¨Ò»£©
Ò» ÎÊÌâµÄÌá³ö
JavaµÄÒ»¸öÖØÒªÓŵã¾ÍÊÇͨ¹ýÀ¬»øÊÕ¼¯Æ÷(Garbage Collection£¬GC)×Ô¶¯¹ÜÀíÄÚ´æµÄ»ØÊÕ£¬³ÌÐòÔ±²»ÐèҪͨ¹ýµ÷Óú¯ÊýÀ´ÊÍ·ÅÄÚ´æ¡£Òò´Ë£¬ºÜ¶à³ÌÐòÔ±ÈÏΪJava²»´æÔÚÄÚ´æÐ¹Â©ÎÊÌ⣬»òÕßÈÏΪ¼´Ê¹ ÓÐÄÚ´æÐ¹Â©Ò²²»ÊdzÌÐòµÄÔðÈΣ¬¶øÊÇGC»òJVMµÄÎÊÌâ¡£Æäʵ£¬ÕâÖÖÏë·¨ÊDz»ÕýÈ·µÄ£¬ÒòΪJavaÒ²´æÔÚÄÚ´æÐ¹Â¶£¬µ«ËüµÄ±íÏÖÓëC++²»Í¬¡£
Ëæ×ÅÔ½À´Ô½¶àµÄ·þÎñÆ÷³ÌÐò²ÉÓÃJava¼¼Êõ£¬ÀýÈçJSP£¬Servlet£¬ EJBµÈ£¬·þÎñÆ÷³ÌÐòÍùÍù³¤ÆÚÔËÐС£ÁíÍ⣬ÔںܶàǶÈëʽϵͳÖУ¬ÄÚ´æµÄ×ÜÁ¿·Ç³£ÓÐÏÞ¡£ÄÚ´æÐ¹Â¶ÎÊÌâÒ²¾Í±äµÃÊ®·Ö¹Ø¼ü£¬¼´Ê¹Ã¿´ÎÔËÐÐÉÙÁ¿Ð¹Â©£¬³¤ÆÚÔËÐÐÖ®ºó£¬ÏµÍ³Ò²ÊÇÃæÁÙ±ÀÀ£µÄΣÏÕ¡£
¶þJavaÊÇÈçºÎ¹ÜÀíÄÚ´æ
ΪÁËÅжÏJavaÖÐÊÇ·ñÓÐÄÚ´æÐ¹Â¶£¬ÎÒÃÇÊ×ÏȱØÐëÁ˽âJavaÊÇÈçºÎ¹ÜÀíÄÚ´æµÄ¡£JavaµÄÄÚ´æ¹ÜÀí¾ÍÊǶÔÏóµÄ·ÖÅäºÍÊÍ·ÅÎÊÌâ¡£·ÖÅäÄÚ´æµÄ·½Ê½¶àÖÖ¶àÑù£¬È¡¾öÓÚ¸ÃÖÖÓïÑÔµÄÓï·¨½á¹¹¡£µ«²»ÂÛÊÇÄÄÒ»ÖÖÓïÑÔµÄÄÚ´æ·ÖÅ䷽ʽ£¬×îºó¶¼Òª·µ»ØËù·ÖÅäµÄÄÚ´æ¿éµÄÆðʼµØÖ·£¬¼´·µ»ØÒ»¸öÖ¸Õëµ½ÄÚ´æ¿éµÄÊ×µØÖ·¡£ÔÚ JavaÖУ¬³ÌÐòÔ±ÐèҪͨ¹ý¹Ø¼ü×ÖnewΪÿ¸ö¶ÔÏóÉêÇëÄÚ´æ¿Õ¼ä (»ù±¾ÀàÐͳýÍâ)£¬ËùÓеĶÔÏó¶¼ÔÚ¶Ñ (Heap)ÖзÖÅä¿Õ¼ä¡£ÁíÍ⣬¶ÔÏóµÄÊÍ·ÅÊÇÓÉGC¾ö¶¨ºÍÖ´Ðеġ£ÔÚJavaÖУ¬ÄÚ´æµÄ·ÖÅäÊÇÓɳÌÐòÍê³ÉµÄ£¬¶øÄÚ´æµÄÊÍ·ÅÊÇÓÉGCÍê³ÉµÄ£¬ÕâÖÖÊÕÖ§Á½ÌõÏß µÄ·½·¨È·Êµ¼ò»¯Á˳ÌÐòÔ±µÄ¹¤×÷¡£µ«Í¬Ê±£¬ËüÒ²¼ÓÖØÁËJVMµÄ¹¤×÷¡£ÕâÒ²ÊÇJava³ÌÐòÔËÐÐËٶȽÏÂýµÄÔÒòÖ®Ò»¡£ÒòΪ£¬GCΪÁËÄܹ»ÕýÈ·ÊͷŶÔÏó£¬GC±ØÐë¼à¿ØÃ¿Ò»¸ö¶ÔÏóµÄÔËÐÐ״̬£¬°üÀ¨¶ÔÏóµÄÉêÇë¡¢ÒýÓᢱ»ÒýÓᢸ³ÖµµÈ£¬GC¶¼ÐèÒª½øÐÐ¼à¿Ø¡£¼àÊÓ¶ÔÏó״̬ÊÇΪÁ˸ü¼Ó׼ȷµØ¡¢¼°Ê±µØÊͷŶÔÏ󣬶øÊͷŶÔÏóµÄ¸ù±¾ÔÔò¾ÍÊǸöÔÏó²»ÔÙ±»ÒýÓá£Îª Á˸üºÃÀí½âGCµÄ¹¤×÷ÔÀí£¬ÎÒÃÇ¿ÉÒÔ½«¶ÔÏó¿¼ÂÇΪÓÐÏòͼµÄ¶¥µã£¬½«ÒýÓùØÏµ¿¼ÂÇΪͼµÄÓÐÏò±ß£¬ÓÐÏò±ß´ÓÒýÓÃÕßÖ¸Ïò±»Òý¶ÔÏó¡£ÁíÍ⣬ÿ¸öÏ̶߳ÔÏó¿ÉÒÔ×÷Ϊһ ¸öͼµÄÆðʼ¶¥µã£¬ÀýÈç´ó¶à³ÌÐò´Ómain½ø³Ì¿ªÊ¼Ö´ÐУ¬ÄÇô¸Ãͼ¾ÍÊÇÒÔmain½ø³Ì¶¥µã¿ªÊ¼µÄÒ»¿Ã¸ùÊ÷¡£ÔÚÕâ¸öÓÐÏòͼÖУ¬¸ù¶¥µã¿É´ïµÄ¶ÔÏó¶¼ÊÇÓÐЧ¶Ô Ïó£¬GC½«²»»ØÊÕÕâЩ¶ÔÏó¡£Èç¹ûij¸ö¶ÔÏó (Á¬Í¨×Óͼ)ÓëÕâ¸ö¸ù¶¥µã²»¿É´ï(×¢Ò⣬¸ÃͼΪÓÐÏòͼ)£¬ÄÇôÎÒÃÇÈÏΪÕâ¸ö(ÕâЩ)¶ÔÏó²»ÔÙ±»ÒýÓ㬿ÉÒÔ±»GC»ØÊÕ¡£
ÒÔÏ£¬ÎÒÃǾÙÒ»¸öÀý×Ó˵Ã÷ÈçºÎÓÃÓÐÏòͼ±íʾÄÚ´æ¹ÜÀí¡£¶ÔÓÚ³ÌÐòµÄÿһ¸öʱ¿Ì£¬ÎÒÃǶ¼ÓÐÒ»¸öÓÐÏòͼ±íʾJVMµÄÄÚ´æ·ÖÅäÇé¿ö¡£ÒÔÏÂÓÒͼ£¬¾ÍÊÇ
Ïà¹ØÎĵµ£º
ʵ¼ÊÉÏ£¬ÎÒ¹ØÓÚjavaµÄ»ù´¡ÖªÊ¶µÄ90%ÒÔÉ϶¼À´×ÔThinking in Java¡£¶ÔÓÚÆäÖеÄsynchronized¹Ø¼ü×Ö£¬µ±Ê±¾ÍÊÇä¯ÀÀһϣ¬´ó¸ÅÖªµÀÒâ˼£¬Ò²Ã»ÓÐϸ¿´¡£ºóÀ´Ò»Ö±Ã»ÓÐÓùýÕâ¸ö¹Ø¼ü×Ö¡£×òÌì¿´Thinking in Patterns with JavaÖеÄObserverģʽ£¬¿´ÁËÆäÖеÄObservableÀàµÄÔ´Â룬·¢ÏÖÀïÃæ¼¸ºõËùÓеķ½·¨¶¼ÓÃÁËsynchronized¹Ø¼ü×Ö£¨²»ÊÇÈ ......
8.9 ³éÏóÀàºÍ½Ó¿Ú
ÔÚʵ¼ÊµÄÏîÄ¿ÖУ¬Õû¸öÏîÄ¿µÄ´úÂëÒ»°ã¿ÉÒÔ·ÖΪ½á¹¹´úÂëºÍÂß¼µÄ´úÂë¡£¾ÍÏñ½¨Ôì·¿ÎÝʱ£¬ÐèÒªÊ×ÏȴÕû¸ö·¿ÎݵĽṹ£¬È»ºóÔÙϸ»¯·¿ÎÝÏà¹ØµÄÆäËüµÄ½á¹¹£¬Ò²ÏñÖÆÔìÆû³µÊ±£¬ÐèÒªÊ×ÏÈÖÆ×÷Æû³µµÄ¿ò¼Ü£¬È»ºó²ÅÊǰ²×°Åä¼þÒÔ¼°ÃÀ»¯µÈ¹¤×÷¡£³ÌÐòÏîÄ¿µÄʵÏÖÒ ......
8.9.3 ³éÏóÀàºÍ½Ó¿ÚµÄ±È½Ï
³éÏóÀàºÍ½Ó¿Ú¶¼ÊǽøÐÐÃæÏò¶ÔÏóÉè¼ÆÊ±×¨ÓõÄÉè¼Æ½á¹¹£¬ÔÚʵ¼Ê½øÐÐÏîÄ¿Éè¼ÆÊ±£¬¾³£ÐèÒª¿¼ÂǵÄÎÊÌâ¾ÍÊÇ——“ʹÓóéÏóÀ໹Êǽӿڔ£¿ÏÂÃæÍ¨¹ý¶ÔÓÚ³éÏóÀàºÍ½Ó¿Ú½øÐмòµ¥µÄ±È½Ï£¬ÊìϤÁ½ÕßÖ®¼äµÄÇø±ðºÍÁªÏµ£¬´Ó¶øÔÚʵ¼ÊÉè¼ÆÊ±Ê ......
The Java virtual machine defines various runtime data areas that are used during execution of a program. Some of these data areas are created on Java virtual machine start-up and are destroyed only when the Java virtual machine exits. Other data areas are per thread. Per-thread data areas are create ......