Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú JavaϵͳÖÐÄÚ´æй©²âÊÔ·½·¨µÄÑо¿

JavaϵͳÖÐÄÚ´æй©²âÊÔ·½·¨µÄÑо¿

ÕªÒª: È«ÎÄͨ¹ýÓëC++ÖеÄÄÚ´æй©ÎÊÌâ½øÐжԱȣ¬½²ÊöÁËJavaÄÚ´æй©µÄ»ù±¾Ô­Àí£¬ÒÔ¼°ÈçºÎ½èÖúOptimizeit profiler¹¤¾ßÀ´²âÊÔÄÚ´æй©ºÍ·ÖÎöÄÚ´æй©µÄÔ­Òò
¡¡¡¡Õª Òª Îȶ¨ÐÔÊǺâÁ¿Èí¼þϵͳÖÊÁ¿µÄÖØÒªÖ¸±ê£¬ÄÚ´æй©ÊÇÆÆ»µÏµÍ³Îȶ¨ÐÔµÄÖØÒªÒòËØ¡£ÓÉÓÚ²ÉÓÃÀ¬»ø»ØÊÕ»úÖÆ£¬JavaÓïÑÔµÄÄÚ´æй©µÄģʽÓëC++µÈÓïÑÔÏà±ÈÓкܴóµÄ²»Í¬¡£È«ÎÄͨ¹ýÓëC++ÖеÄÄÚ´æй©ÎÊÌâ½øÐжԱȣ¬½²ÊöÁËJavaÄÚ´æй©µÄ»ù±¾Ô­Àí£¬ÒÔ¼°ÈçºÎ½èÖúOptimizeit profiler¹¤¾ßÀ´²âÊÔÄÚ´æй©ºÍ·ÖÎöÄÚ´æй©µÄÔ­Òò£¬ÔÚʵ¼ùÖÐÖ¤Ã÷ÕâÊÇÒ»Ì×ÐÐÖ®ÓÐЧµÄ·½·¨¡£

¡¡¡¡¹Ø¼ü´Ê Java; ÄÚ´æй©; GC(À¬»øÊÕ¼¯Æ÷) ÒýÓÃ; Optimizeit

¡¡¡¡ÎÊÌâµÄÌá³ö

¡¡¡¡±ÊÕßÔø¾­²ÎÓ뿪·¢µÄÍø¹Üϵͳ£¬ÏµÍ³¹æÄ£ÅÓ´ó£¬Éæ¼°ÉÏ°ÙÍòÐдúÂ롣ϵͳÖ÷Òª²ÉÓÃJavaÓïÑÔ¿ª·¢£¬´óÌåÉÏ·ÖΪ¿Í»§¶Ë¡¢·þÎñÆ÷ºÍÊý¾Ý¿âÈý¸ö²ã´Î¡£ÔÚ°æ±¾½øÈë²âÊÔºÍÊÔÓõĹý³ÌÖУ¬ÏÖ³¡ÈËÔ±ºÍ²âÊÔ²¿ÈËÔ±·×·×·´Ó³:ϵͳµÄÎȶ¨ÐԱȽϲ¾­³£»á³öÏÖ·þÎñÆ÷¶ËÔËÐÐÒ»ÖçÒ¹¾ÍËÀ»úµÄÏÖÏ󣬿ͻ§¶ËÅÜËÀµÄÏÖÏóÒ²±È½ÏƵ·±µØ·¢Éú¡£¶ÔÓÚÍø¹ÜϵͳÀ´½²£¬¾­³£ÐԵķþÎñÆ÷ËÀ»úÊǸö±È½ÏÑÏÖصÄÎÊÌ⣬ÒòΪƵ·±µÄËÀ»ú²»½ö¿ÉÄܵ¼ÖÂÇ°ºǫ́Êý¾Ý²»Ò»Ö£¬·¢Éú´íÎ󣬸ü»áÒýÆðÓû§µÄ²»Âú£¬½µµÍ¿Í»§µÄÐÅÈζȡ£Òò´Ë£¬·þÎñÆ÷¶ËµÄÎȶ¨ÐÔÎÊÌâ±ØÐ뾡¿ì½â¾ö¡£

¡¡¡¡½â¾ö˼·

¡¡¡¡Í¨¹ý²ì¿´·þÎñÆ÷¶ËÈÕÖ¾£¬·¢ÏÖËÀ»úÇ°·þÎñÆ÷¶ËƵ·±Å׳öOutOfMemoryExceptionÄÚ´æÒç³ö´íÎó£¬Òò´Ë³õ²½°ÑËÀ»úµÄÔ­Òò¶¨Î»ÎªÄÚ´æй©ÒýÆðÄÚ´æ²»×㣬½ø¶øÒýÆðÄÚ´æÒç³ö´íÎó¡£ÈçºÎ²éÕÒÒýÆðÄÚ´æй©µÄÔ­ÒòÄØ?ÓÐÁ½ÖÖ˼·:µÚÒ»ÖÖ£¬°²ÅÅÓо­ÑéµÄ±à³ÌÈËÔ±¶Ô´úÂë½øÐÐ×ß²éºÍ·ÖÎö£¬ÕÒ³öÄÚ´æй©·¢ÉúµÄλÖÃ;µÚ¶þÖÖ£¬Ê¹ÓÃרÃŵÄÄÚ´æй©²âÊÔ¹¤¾ßOptimizeit½øÐвâÊÔ¡£ÕâÁ½ÖÖ·½·¨¶¼Êǽâ¾öϵͳÎȶ¨ÐÔÎÊÌâµÄÓÐЧÊֶΣ¬Ê¹ÓÃÄÚ´æ²âÊÔ¹¤¾ß¶ÔÓÚÒѾ­±©Â¶³öÀ´µÄÄÚ´æй©ÎÊÌâµÄ¶¨Î»ºÍ½â¾ö·Ç³£ÓÐЧ;µ«ÊÇÈí¼þ²âÊÔµÄÀíÂÛÒ²¸æËßÎÒÃÇ£¬ÏµÍ³ÖÐÓÀÔ¶´æÔÚһЩûÓб©Â¶³öÀ´µÄÎÊÌ⣬¶øÇÒ£¬ÏµÍ³µÄÎȶ¨ÐÔÎÊÌâÒ²²»½ö½öÖ»ÊÇÄÚ´æй©µÄÎÊÌ⣬´úÂë×ß²éÊÇÌá¸ßϵͳµÄÕûÌå´úÂëÖÊÁ¿ÄËÖÁ½â¾öDZÔÚÎÊÌâµÄÓÐЧÊֶΡ£»ùÓÚÕâÑùµÄ¿¼ÂÇ£¬ÎÒÃǵÄÄÚ´æÎȶ¨ÐÔ¹¤×÷¾ö¶¨²ÉÓôúÂë×ß²é½áºÏ²âÊÔ¹¤¾ßµÄʹÓã¬Ë«¹ÜÆëÏ£¬ÕùÈ¡±È½Ï³¹µ×µØ½â¾öϵͳµÄÎȶ¨ÐÔÎÊÌâ¡£

¡¡¡¡ÔÚ´úÂë×ß²éµÄ¹¤×÷ÖУ¬°²ÅÅÁ˶ÔϵͳҵÎñºÍ¿ª·¢ÓïÑÔ¹¤¾ß±È½ÏÊìϤµÄ¿ª·¢ÈËÔ±¶ÔÓ¦ÓõĴúÂë½øÐÐÁ˽»²æ×߲飬ÕÒ³ö´úÂëÖдæÔÚµÄÊý¾Ý¿âÁ¬½ÓÉùÃ÷ºÍ½á¹û¼¯Î´¹Ø±Õ¡¢´úÂëÈßÓàºÍµÍЧµÈ¹ÊÕÏÈô¸É£¬È¡µÃÁËÁ¼ºÃµÄЧ¹û£¬ÎÄÖÐÖ÷Òª½²Êö½áºÏ¹¤¾ßµÄʹÓöÔÒѾ­³öÏÖµÄÄÚ´æй©ÎÊÌâµÄ¶¨Î»·½·¨¡£

¡¡¡¡ÄÚ´æй©µÄ»ù±¾Ô­Àí

¡¡¡¡ÔÚC++ÓïÑÔ³ÌÐòÖУ¬Ê¹ÓÃnew²Ù×÷·û´´½¨µÄ¶ÔÏó£¬ÔÚʹÓÃÍ ê±ÏºóÓ¦¸Ãͨ¹ýdelete²Ù×÷·ûÏÔʾµØÊÍ·Å£¬·ñÔò£¬ÕâЩ¶ÔÏó½«Õ¼Óöѿռ䣬ÓÀԶûÓа취µÃµ½»ØÊÕ£¬´Ó¶øÒýÆðÄÚ´æ¿Õ¼äµÄй©¡£Èçϵļòµ¥´úÂë¾Í¿ÉÒÔÒýÆðÄÚ´æµÄй©:

<table borderColor=#cccccc width="90%" align=center bgColor=#e6e6e3 border=1> <tr> <td>void function(){
¡¡Int[] vec = new int[5];
}</td></tr></table>
¡¡¡¡ÔÚfunction()·½·¨Ö´ÐÐÍê±Ïºó£¬vecÊý×éÒѾ­ÊDz»¿É´ï¶ÔÏó£¬ÔÚC++ÓïÑÔÖУ¬ÕâÑùµÄ¶ÔÏóÓÀÔ¶Ò²µÃ²»µ½ÊÍ·Å£¬³ÆÕâÖÖÏÖÏóΪÄÚ´æй©¡£

¡¡¡¡¶øJavaÊÇͨ¹ýÀ¬»øÊÕ¼¯Æ÷(Garbage Collection£¬GC)×Ô¶¯¹ÜÀíÄÚ´æµÄ»ØÊÕ£¬³ÌÐòÔ±²»ÐèҪͨ¹ýµ÷Óú¯ÊýÀ´ÊÍ·ÅÄڴ棬µ«ËüÖ»ÄÜ»ØÊÕÎÞÓò¢ÇÒ²»ÔÙ±»ÆäËü¶ÔÏóÒýÓõÄÄÇЩ¶ÔÏóËùÕ¼ÓõĿռ䡣ÔÚÏÂÃæµÄ´úÂëÖУ¬Ñ­»·ÉêÇëObject¶ÔÏ󣬲¢½«ËùÉêÇëµÄ¶ÔÏó·ÅÈëÒ»¸öVectorÖУ¬Èç¹û½ö½öÊͷŶÔÏó±¾Éí£¬µ«ÊÇÒòΪVectorÈÔÈ»ÒýÓøöÔÏó£¬ËùÒÔÕâ¸ö¶ÔÏó¶ÔGCÀ´ËµÊDz»¿É»ØÊյġ£Òò´Ë£¬Èç¹û¶ÔÏó¼ÓÈëµ½Vectorºó£¬»¹±ØÐë´ÓVectorÖÐɾ³ý£¬×î¼òµ¥µÄ·½·¨¾ÍÊǽ«Vector¶ÔÏóÉèÖÃΪnull¡£

<table borderColor=#cccccc width="90%" align=center bgColor=#e6e6e3 border=1> <tr> <td>Vector v = new Vector(10);
for (int i = 1; i < 100; i++)
{
¡¡Object o = new Object();
¡¡v.add(o);
¡¡o = null;
}//´Ëʱ£¬ËùÓеÄObject¶ÔÏó¶¼Ã»Óб»ÊÍ·Å£¬ÒòΪ±äÁ¿vÒýÓÃÕâЩ¶ÔÏó¡£</td></tr></table>
¡¡¡¡Êµ¼ÊÉÏÎÞÓ㬶ø»¹±»ÒýÓõĶÔÏó£¬GC¾ÍÎÞÄÜΪÁ¦ÁË(ÊÂʵÉÏGCÈÏΪËü»¹ÓÐÓÃ)£¬ÕâÒ»µãÊǵ¼ÖÂÄÚ´æй©×îÖØÒªµÄÔ­Òò¡£

¡¡¡¡JavaµÄÄÚ´æ»ØÊÕ»úÖÆ¿ÉÒÔÐÎÏóµØÀí½âΪÔڶѿռäÖÐÒýÈëÁËÖØÁ¦³¡£¬ÒѾ­¼ÓÔصÄÀàµÄ¾²Ì¬±äÁ¿ºÍ´¦ÓڻÏ̵߳ĶÑÕ»¿Õ¼äµÄ±äÁ¿ÊÇÕâ¸ö¿Õ¼äµÄÇ£Òý¶ÔÏó¡£ÕâÀïÇ£Òý¶ÔÏóÊÇÖ¸°´ÕÕJavaÓïÑԹ淶£¬¼´±ãûÓÐÆäËü¶ÔÏó±£³Ö¶ÔËüµÄÒýÓÃÒ²²»Äܹ»±»»ØÊյĶÔÏ󣬼´JavaÄÚ´æ¿Õ¼äÖеı¾Ô­¶ÔÏó¡£µ±È»Àà¿ÉÄܱ»È¥¼ÓÔØ£¬»î¶¯Ï̵߳ĶÑÕ»Ò²ÊDz»¶Ï±ä»¯µÄ£¬Ç£Òý¶ÔÏóµÄ¼¯ºÏÒ²ÊDz»¶Ï±ä»¯µÄ¡£¶ÔÓڶѿռäÖеÄÈκÎÒ»¸ö¶ÔÏó£¬Èç¹û´æÔÚÒ»Ìõ»òÕ߶àÌõ´Óij¸ö»òÕßij¼¸¸öÇ£Òý¶ÔÏ󵽸öÔÏóµÄÒýÓÃÁ´£¬Ôò¾ÍÊÇ¿É´ï¶ÔÏ󣬿ÉÒÔÐÎÏóµØÀí½âΪ´ÓÇ£Òý¶ÔÏóÉì³öµÄÒýÓÃÁ´½«ÆäÀ­×¡£¬±ÜÃâµôµ½»ØÊÕ³ØÖÐ;¶øÆäËüµÄ²»¿É´ï¶ÔÏóÓÉÓÚ²»´æÔÚÇ£Òý¶ÔÏóµÄÀ­Á¦£¬ÔÚÖØÁ¦µÄ×÷ÓÃϽ«µôÈë»ØÊճء£ÔÚͼ1ÖУ¬A¡¢B¡¢C¡¢D¡¢E¡¢FÁù¸ö¶ÔÏ󶼱»Ç£Òý¶ÔÏóËùÖ±½Ó»òÕß¼ä½ÓµØ¡°Ç£Òý¡±£¬Ê¹µÃËüÃDZÜÃâÔÚÖØÁ¦µÄ×÷ÓÃϵôÈë»ØÊճء£Èç¹ûTR1-AÁ´ºÍTR2-DÁ´¶Ï¿ª£¬ÔòA¡¢B¡¢CÈý¸ö¶ÔÏóÓÉÓÚʧȥǣÒý£¬ÔÚÖØÁ¦µÄ×÷ÓÃϵôÈë»ØÊÕ³Ø(±»»ØÊÕ)£¬D¶ÔÏóÒ²ÊÇͬÑùµÄÔ­ÒòµôÈë»ØÊճأ¬¶øF¶ÔÏóÈÔÈ»´æÔÚÒ»¸öÇ£ÒýÁ´(TR3-E-F)£¬ËùÒÔ²»»á±»»ØÊÕ£¬Èçͼ2¡¢3Ëùʾ¡£

¡¡¡¡
¡¡¡¡Í¼1 ³õʼ״̬

¡¡¡¡
¡¡¡¡Í¼2 TR1-AÁ´ºÍTR2-DÁ´¶Ï¿ª£¬A¡¢B¡¢C¡¢DµôÈë»ØÊÕ³Ø

¡¡¡¡
¡¡¡¡Í¼3 A¡¢B¡¢C¡¢DËĸö¶ÔÏó±»»ØÊÕ

¡¡¡¡Í¨¹ýÇ°ÃæµÄ½éÉÜ¿ÉÒÔ¿´µ½£¬ÓÉÓÚ²ÉÓÃÁËÀ¬»ø»ØÊÕ»úÖÆ£¬Èκβ»¿É´ï¶ÔÏ󶼿ÉÒÔÓÉÀ¬»øÊÕ¼¯Ï̻߳ØÊÕ¡£Òò´Ëͨ³£ËµµÄJavaÄÚ´æй©ÆäʵÊÇÖ¸ÎÞÒâʶµÄ¡¢·Ç¹ÊÒâµÄ¶ÔÏóÒýÓ㬻òÕßÎÞÒâʶµÄ¶ÔÏó±£³Ö¡£ÎÞÒâʶµÄ¶ÔÏóÒýÓÃÊÇÖ¸´úÂëµÄ¿ª·¢ÈËÔ±±¾À´ÒѾ­¶Ô¶ÔÏóʹÓÃÍê±Ï£¬È´ÒòΪ±àÂëµÄ´íÎó¶øÒâÍâµØ±£´æÁ˶ԸöÔÏóµÄÒýÓÃ(Õâ¸öÒýÓõĴæÔÚ²¢²»ÊDZàÂëÈËÔ±µÄÖ÷¹ÛÒâÔ¸)£¬´Ó¶øʹµÃ¸Ã¶ÔÏóÒ»Ö±ÎÞ·¨±»À¬»ø»ØÊÕÆ÷»ØÊÕµô£¬ÕâÖÖ±¾À´ÒÔΪ¿ÉÒÔÊͷŵôµÄÈ´×îÖÕδÄܱ»ÊͷŵĿռä¿ÉÒÔÈÏΪÊDZ»¡°Ð¹Â©ÁË¡±¡£

¡¡¡¡ÕâÀïͨ¹ýÒ»¸öÀý×ÓÀ´ÑÝʾJavaµÄÄÚ´æй©¡£¼ÙÉèÓÐÒ»¸öÈÕÖ¾ÀàLogger£¬ÆäÌṩһ¸ö¾²Ì¬µÄlog(String msg)·½·¨£¬ÈκÎÆäËüÀ඼¿ÉÒÔµ÷ÓÃLogger.Log(message)À´½«messageµÄÄÚÈݼǼµ½ÏµÍ³µÄÈÕÖ¾ÎļþÖС£LoggerÀàÓÐÒ»¸öÀàÐÍΪHashMapµÄ¾²Ì¬±äÁ¿temp£¬Ã¿´ÎÔÚÖ´ÐÐlog(message) ·½·¨µÄʱºò£¬¶¼Ê×ÏȽ«messageµÄÖµ¶ªÈëtempÖÐ(ÒÔµ±Ç°Ïß³Ì+µ±Ç°Ê±¼äΪ¼ü)£¬ÔÚ·½·¨Í˳ö֮ǰÔÙ´ÓtempÖн«ÒÔµ±Ç°Ï̺߳͵±Ç°Ê±¼äΪ¼üµÄÌõĿɾ³ý¡£×¢Ò⣬ÕâÀﵱǰʱ¼äÊDz»¶Ï±ä»¯µÄ£¬ËùÒÔlog·½·¨ÔÚÍ˳ö֮ǰִÐÐɾ³ýÌõÄ¿µÄ²Ù×÷²¢²»ÄÜɾ³ý·½·¨Ö´ÐÐÖ®³õ¶ªÈëµÄÌõÄ¿¡£ÕâÑù£¬ÈκÎÒ»¸ö×÷Ϊ²ÎÊý´«¸ølog·½·¨µÄ×Ö·û´®×îÖÕÓÉÓÚ±»LoggerµÄ¾²Ì¬±äÁ¿tempÒýÓ㬶øÎÞ·¨µÃµ½»ØÊÕ£¬ÕâÖÖÎ¥±³ÊµÏÖÕßÖ÷¹ÛÒâͼµÄÎÞÒâʶµÄ¶ÔÏó±£³Ö¾ÍÊÇÎÒÃÇËù˵µÄJavaÄÚ´æй©¡£


¡ü·µ»ØĿ¼
ǰһƪ: JavaÆóÒµÓ¦ÓÃϵͳ¿ò¼ÜµÄ±È½ÏÓëÑ¡Ôñ
ºóһƪ: JavaÐéÄâ»úµÄÑо¿ÓëʵÏÖ