Java±à³Ì˼ÏëµÚ4°æ[ÖÐÎÄ°æ](PDF¸ñʽ)-µÚ37²¿·Ö
°´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ£¬°´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ£¬°´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿£¡
¡ª¡ª¡ª¡ªÎ´ÔĶÁÍꣿ¼ÓÈëÊéÇ©ÒѱãÏ´μÌÐøÔĶÁ£¡
ÏóÕ¼¾ÝµÄÄÚ´æ¡£ÏÖÔÚ¿¼ÂÇÒ»Öַdz£ÌØÊâÇÒ²»¶à¼ûµÄÇé¿ö¡£¼Ù¶¨ÎÒÃǵĶÔÏó·ÖÅäÁËÒ»¸ö¡°ÌØÊ⡱ÄÚ´æÇøÓò£¬Ã»¡¡
ÓÐʹÓá¡new¡£À¬»øÊÕ¼¯Æ÷Ö»ÖªµÀÊÍ·ÅÄÇЩÓÉnew¡¡·ÖÅäµÄÄڴ棬ËùÒÔ²»ÖªµÀÈçºÎÊͷŶÔÏóµÄ¡°ÌØÊ⡱Äڴ档Ϊ¡¡
½â¾öÕâ¸öÎÊÌ⣬Java¡¡ÌṩÁËÒ»¸öÃûΪfinalize£¨£©µÄ·½·¨£¬¿ÉΪÎÒÃǵÄÀඨÒåËü¡£ÔÚÀíÏëÇé¿öÏ£¬ËüµÄ¹¤×÷Ô¡¡
ÀíÓ¦¸ÃÊÇÕâÑùµÄ£ºÒ»µ©À¬»øÊÕ¼¯Æ÷×¼±¸ºÃÊͷŶÔÏóÕ¼ÓõĴ洢¿Õ¼ä£¬ËüÊ×Ïȵ÷Óá¡finalize£¨£©£¬¶øÇÒÖ»ÓÐÔÚÏ¡¡
Ò»´ÎÀ¬»øÊÕ¼¯¹ý³ÌÖУ¬²Å»áÕæÕý»ØÊÕ¶ÔÏóµÄÄÚ´æ¡£ËùÒÔÈç¹ûʹÓÃfinalize£¨£©£¬¾Í¿ÉÒÔÔÚÀ¬»øÊÕ¼¯ÆÚ¼ä½øÐÐÒ»¡¡
ЩÖØÒªµÄÇå³ý»òÇåɨ¹¤×÷¡£¡¡¡¡
µ«Ò²ÊÇÒ»¸öDZÔڵıà³ÌÏÝÚ壬ÒòΪÓÐЩ³ÌÐòÔ±£¨ÌرðÊÇÔÚ¡¡C£«£«¿ª·¢±³¾°µÄ£©¸Õ¿ªÊ¼¿ÉÄÜ»á´íÎóÈÏΪËü¾ÍÊÇÔÚ¡¡
C£«£«ÖÐΪ¡°ÆÆ»µÆ÷¡±£¨Destructor£©Ê¹ÓõÄfinalize£¨£©¡ª¡ªÆÆ»µ£¨Çå³ý£©Ò»¸ö¶ÔÏóµÄʱºò£¬¿Ï¶¨»áµ÷ÓÃÕâ¸ö¡¡
º¯Êý¡£µ«ÔÚÕâÀïÓбØÒªÇø·ÖÒ»ÏÂC£«£«ºÍ¡¡Java¡¡µÄÇø±ð£¬ÒòΪC£«£«µÄ¶ÔÏó¿Ï¶¨»á±»Çå³ý£¨ÅÅ¿ª±à³Ì´íÎóµÄÒò¡¡
ËØ£©£¬¶øJava¡¡¶ÔÏ󲢷ǿ϶¨ÄÜ×÷ΪÀ¬»ø±»¡°ÊÕ¼¯¡±È¥¡£»òÕß»»¾ä»°Ëµ£º¡¡¡¡
¡¡¡¡
À¬»øÊÕ¼¯²¢²»µÈÓÚ¡°ÆÆ»µ¡±£¡¡¡¡¡
¡¡¡¡
ÈôÄÜʱ¿ÌÀμÇÕâÒ»µã£¬²Èµ½ÏÝÚåµÄ¿ÉÄÜÐԾͻá´ó´ó¼õÉÙ¡£ËüÒâζ×ÅÔÚÎÒÃDz»ÔÙÐèÒªÒ»¸ö¶ÔÏó֮ǰ£¬ÓÐЩÐж¯¡¡
ÊDZØÐë²ÉÈ¡µÄ£¬¶øÇÒ±ØÐëÓÉ×Ô¼ºÀ´²ÉÈ¡ÕâЩÐж¯¡£Java¡¡²¢Î´Ìṩ¡°ÆÆ»µÆ÷¡±»òÕßÀàËƵĸÅÄËùÒÔ±ØÐë´´½¨¡¡
Ò»¸öÔʼµÄ·½·¨£¬ÓÃËüÀ´½øÐÐÕâÖÖÇå³ý¡£ÀýÈ磬¼ÙÉèÔÚ¶ÔÏó´´½¨¹ý³ÌÖУ¬Ëü»á½«×Ô¼ºÃè»æµ½ÆÁÄ»ÉÏ¡£Èç¹û²»¡¡
´ÓÆÁÄ»Ã÷ȷɾ³ýËüµÄͼÏñ£¬ÄÇôËü¿ÉÄÜÓÀÔ¶¶¼²»»á±»Çå³ý¡£ÈôÔÚfinalize£¨£©ÀïÖÃÈëijÖÖɾ³ý»úÖÆ£¬ÄÇô¼ÙÉè¡¡
¶ÔÏó±»µ±×÷À¬»øÊÕµôÁË£¬Í¼ÏñÊ×ÏȻὫ×ÔÉí´ÓÆÁÄ»ÉÏÒÆÈ¥¡£µ«Èôδ±»ÊÕµô£¬Í¼Ïñ¾Í»á±£ÁôÏÂÀ´¡£ËùÒÔÒª¼Çס¡¡
µÄµÚ¶þ¸öÖصãÊÇ£º¡¡¡¡
¡¡¡¡
ÎÒÃǵĶÔÏó¿ÉÄܲ»»áµ±×÷À¬»ø±»ÊÕµô£¡¡¡¡¡
¡¡¡¡
ÓÐʱ¿ÉÄÜ·¢ÏÖÒ»¸ö¶ÔÏóµÄ´æ´¢¿Õ¼äÓÀÔ¶¶¼²»»áÊÍ·Å£¬ÒòΪ×Ô¼ºµÄ³ÌÐòÓÀÔ¶¶¼½Ó½üÓÚÓùâ¿Õ¼äµÄÁÙ½çµã¡£Èô³Ì¡¡
ÐòÖ´ÐнáÊø£¬¶øÇÒÀ¬»øÊÕ¼¯Æ÷Ò»Ö±¶¼Ã»ÓÐÊÍ·ÅÎÒÃÇ´´½¨µÄÈκζÔÏóµÄ´æ´¢¿Õ¼ä£¬ÔòËæ×ųÌÐòµÄÍ˳ö£¬ÄÇЩ×Ê¡¡
Ô´»á·µ»Ø¸ø²Ù×÷ϵͳ¡£ÕâÊÇÒ»¼þºÃÊÂÇ飬ÒòΪÀ¬»øÊÕ¼¯±¾ÉíÒ²ÒªÏûºÄһЩ¿ªÏú¡£ÈçÓÀÔ¶¶¼²»ÓÃËü£¬ÄÇôÓÀÔ¶¡¡
Ò²²»ÓÃÖ§³öÕⲿ·Ö¿ªÏú¡£¡¡¡¡
4¡£3¡£1¡¡finalize£¨£©¡¡ÓÃ;ºÎÔÚ¡¡¡¡
´Ëʱ£¬´ó¼Ò¿ÉÄÜÒÑÏàÐÅÁË×Ô¼ºÓ¦¸Ã½«finalize£¨£©×÷ΪһÖÖ³£¹æÓÃ;µÄÇå³ý·½·¨Ê¹Óá£ËüÓÐʲôºÃ´¦ÄØ£¿¡¡¡¡
Òª¼ÇסµÄµÚÈý¸öÖصãÊÇ£º¡¡¡¡
¡¡¡¡
À¬»øÊÕ¼¯Ö»¸úÄÚ´æÓйأ¡¡¡¡¡
¡¡¡¡
Ò²¾ÍÊÇ˵£¬À¬»øÊÕ¼¯Æ÷´æÔÚµÄΨһÔÒòÊÇΪÁË»ØÊÕ³ÌÐò²»ÔÙʹÓõÄÄÚ´æ¡£ËùÒÔ¶ÔÓÚÓëÀ¬»øÊÕ¼¯ÓйصÄÈκλ
¶¯À´Ëµ£¬ÆäÖÐ×îÖµµÃ×¢ÒâµÄÊÇfinalize£¨£©·½·¨£¬ËüÃÇÒ²±ØÐëͬÄÚ´æÒÔ¼°ËüµÄ»ØÊÕÓйء£¡¡¡¡
µ«ÕâÊÇ·ñÒâζ׿ÙÈç¶ÔÏó°üº¬ÁËÆäËû¶ÔÏó£¬finalize£¨£©¾ÍÓ¦¸ÃÃ÷È·ÊÍ·ÅÄÇЩ¶ÔÏóÄØ£¿´ð°¸ÊÇ·ñ¶¨µÄ¡ª¡ªÀ¬»ø¡¡
ÊÕ¼¯Æ÷»á¸ºÔðÊÍ·ÅËùÓжÔÏóÕ¼¾ÝµÄÄڴ棬ÎÞÂÛÕâЩ¶ÔÏóÊÇÈçºÎ´´½¨µÄ¡£Ëü½«¶Ôfinalize£¨£©µÄÐèÇóÏÞÖƵ½ÌØÊâ¡¡
µÄÇé¿ö¡£ÔÚÕâÖÖÇé¿öÏ£¬ÎÒÃǵĶÔÏó¿É²ÉÓÃÓë´´½¨¶ÔÏóʱ²»Í¬µÄ·½·¨·ÖÅäһЩ´æ´¢¿Õ¼ä¡£µ«´ó¼Ò»òÐí»á×¢Òâ¡¡
µ½£¬Java¡¡ÖеÄËùÓж«Î÷¶¼ÊǶÔÏó£¬ËùÒÔÕâµ½µ×ÊÇÔõôһ»ØÊÂÄØ£¿¡¡¡¡
Ö®ËùÒÔҪʹÓÃfinalize£¨£©£¬¿´ÆðÀ´ËƺõÊÇÓÉÓÚÓÐʱÐèÒª²ÉÈ¡ÓëJava¡¡µÄÆÕͨ·½·¨²»Í¬µÄÒ»ÖÖ·½·¨£¬Í¨¹ý·ÖÅä¡¡
ÄÚ´æÀ´×öһЩ¾ßÓÐC¡¡·ç¸ñµÄÊÂÇé¡£ÕâÖ÷Òª¿ÉÒÔͨ¹ý¡°¹ÌÓз½·¨¡±À´½øÐУ¬ËüÊÇ´ÓJava¡¡Àïµ÷Ó÷ǡ¡Java¡¡·½·¨µÄ¡¡
Ò»ÖÖ·½Ê½£¨¹ÌÓз½·¨µÄÎÊÌâÔÚ¸½Â¼¡¡A¡¡ÌÖÂÛ£©¡£C¡¡ºÍ¡¡C£«£«ÊÇĿǰΨһ»ñµÃ¹ÌÓз½·¨Ö§³ÖµÄÓïÑÔ¡£µ«ÓÉÓÚËüÃÇÄܵ÷¡¡
ÓÃͨ¹ýÆäËûÓïÑÔ±àдµÄ×Ó³ÌÐò£¬ËùÒÔÄܹ»ÓÐЧµØµ÷ÓÃÈκζ«Î÷¡£ÔÚ·Ç¡¡Java¡¡´úÂëÄÚ²¿£¬Ò²ÐíÄܵ÷Óá¡C¡¡µÄ¡¡
malloc£¨£©ÏµÁк¯Êý£¬ÓÃËü·ÖÅä´æ´¢¿Õ¼ä¡£¶øÇÒ³ý·Çµ÷ÓÃÁËfree£¨£©£¬·ñÔò´æ´¢¿Õ¼ä²»»áµÃµ½ÊÍ·Å£¬´Ó¶øÔì³ÉÄÚ¡¡
´æ¡°Â©¶´¡±µÄ³öÏÖ¡£µ±È»£¬free£¨£©ÊÇÒ»¸öC¡¡ºÍC£«£«º¯Êý£¬ËùÒÔÎÒÃÇÐèÒªÔÚ¡¡finalize£¨£©ÄÚ²¿µÄÒ»¸ö¹ÌÓз½·¨ÖС¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡105¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡107¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
µ÷ÓÃËü¡£¡¡¡¡
¶ÁÍêÉÏÊöÎÄ×ֺ󣬴ó¼Ò»òÐíÒÑŪÇå³þÁË×Ô¼º²»±Ø¹ý¶àµØʹÓÃfinalize£¨£©¡£Õâ¸ö˼ÏëÊÇÕýÈ·µÄ£»Ëü²¢²»ÊǽøÐС¡
ÆÕͨÇå³ý¹¤×÷µÄÀíÏ볡Ëù¡£ÄÇô£¬ÆÕͨµÄÇå³ý¹¤×÷Ó¦Ôں䦽øÐÐÄØ£¿¡¡¡¡
4¡£3¡£2¡¡¡¡±ØÐëÖ´ÐÐÇå³ý¡¡¡¡
ΪÇå³ýÒ»¸ö¶ÔÏó£¬ÄǸö¶ÔÏóµÄÓû§±ØÐëÔÚÏ£Íû½øÐÐÇå³ýµÄµØµãµ÷ÓÃÒ»¸öÇå³ý·½·¨¡£ÕâÌýÆðÀ´ËƺõºÜÈÝÒ××ö¡¡
µ½£¬µ«È´Óë¡¡C£«£«¡¡¡°ÆÆ»µÆ÷¡±µÄ¸ÅÄîÉÔÓеִ¥¡£ÔÚC£«£«ÖУ¬ËùÓжÔÏ󶼻áÆÆ»µ£¨Çå³ý£©¡£»òÕß»»¾ä»°Ëµ£¬ËùÓжԡ¡
Ï󶼡°Ó¦¸Ã¡±ÆÆ»µ¡£Èô½«C£«£«¶ÔÏó´´½¨³ÉÒ»¸ö±¾µØ¶ÔÏ󣬱ÈÈçÔÚ¶ÑÕ»Öд´½¨£¨ÔÚ¡¡Java¡¡ÖÐÊDz»¿ÉÄܵģ©£¬ÄÇô¡¡
Çå³ý»òÆÆ»µ¹¤×÷¾Í»áÔÚ¡°½áÊø»¨À¨ºÅ¡±Ëù´ú±íµÄ¡¢´´½¨Õâ¸ö¶ÔÏóµÄ×÷ÓÃÓòµÄĩβ½øÐС£Èô¶ÔÏóÊÇÓÃnew¡¡´´½¨¡¡
µÄ£¨ÀàËÆÓÚ¡¡Java¡¡£©£¬ÄÇôµ±³ÌÐòÔ±µ÷ÓÃC£«£«µÄdelete¡¡ÃüÁîʱ£¨Java¡¡Ã»ÓÐÕâ¸öÃüÁ£¬¾Í»áµ÷ÓÃÏàÓ¦µÄÆÆ»µ¡¡
Æ÷¡£Èô³ÌÐòÔ±Íü¼ÇÁË£¬ÄÇôÓÀÔ¶²»»áµ÷ÓÃÆÆ»µÆ÷£¬ÎÒÃÇ×îÖյõ½µÄ½«ÊÇÒ»¸öÄڴ桰©¶´¡±£¬ÁíÍ⻹°üÀ¨¶ÔÏó¡¡
µÄÆäËû²¿·ÖÓÀÔ¶²»»áµÃµ½Çå³ý¡£¡¡¡¡
Ïà·´£¬Java¡¡²»ÔÊÐíÎÒÃÇ´´½¨±¾µØ£¨¾Ö²¿£©¶ÔÏ󡪡ªÎÞÂÛÈçºÎ¶¼ÒªÊ¹Óá¡new¡£µ«ÔÚJava¡¡ÖУ¬Ã»ÓС°delete¡±Ãü¡¡
ÁîÀ´ÊͷŶÔÏó£¬ÒòΪÀ¬»øÊÕ¼¯Æ÷»á°ïÖúÎÒÃÇ×Ô¶¯ÊÍ·Å´æ´¢¿Õ¼ä¡£ËùÒÔÈç¹ûÕ¾ÔڱȽϼò»¯µÄÁ¢³¡£¬ÎÒÃÇ¿ÉÒÔ˵¡¡
ÕýÊÇÓÉÓÚ´æÔÚÀ¬»øÊÕ¼¯»úÖÆ£¬ËùÒÔ¡¡Java¡¡Ã»ÓÐÆÆ»µÆ÷¡£È»¶ø£¬Ëæ×ÅÒÔºóѧϰµÄÉîÈ룬¾Í»áÖªµÀÀ¬»øÊÕ¼¯Æ÷µÄ´æ¡¡
ÔÚ²¢²»ÄÜÍêÈ«Ïû³ý¶ÔÆÆ»µÆ÷µÄÐèÒª£¬»òÕß˵²»ÄÜÏû³ý¶ÔÆÆ»µÆ÷´ú±íµÄÄÇÖÖ»úÖƵÄÐèÒª£¨¶øÇÒ¾ø¶Ô²»ÄÜÖ±½Óµ÷¡¡
ÓÃfinalize£¨£©£¬ËùÒÔÓ¦¾¡Á¿±ÜÃâÓÃËü£©¡£ÈôÏ£ÍûÖ´ÐгýÊÍ·Å´æ´¢¿Õ¼äÖ®ÍâµÄÆäËûijÖÖÐÎʽµÄÇå³ý¹¤×÷£¬ÈÔÈ»¡¡
±ØÐëµ÷ÓÃJava¡¡ÖеÄÒ»¸ö·½·¨¡£ËüµÈ¼ÛÓÚC£«£«µÄÆÆ»µÆ÷£¬Ö»ÊÇûºóÕß·½±ã¡£¡¡¡¡
finalize£¨£©×îÓÐÓô¦µÄµØ·½Ö®Ò»Êǹ۲ìÀ¬»øÊÕ¼¯µÄ¹ý³Ì¡£ÏÂÃæÕâ¸öÀý×ÓÏò´ó¼ÒչʾÁËÀ¬»øÊÕ¼¯Ëù¾ÀúµÄ¹ý¡¡
³Ì£¬²¢¶ÔÇ°ÃæµÄ³ÂÊö½øÐÐÁË×ܽᡣ¡¡¡¡
¡¡¡¡
//£º¡¡Garbage¡£java¡¡¡¡
//¡¡Demonstration¡¡of¡¡the¡¡garbage¡¡¡¡
//¡¡collector¡¡and¡¡finalization¡¡¡¡
¡¡¡¡
class¡¡Chair¡¡£û¡¡¡¡
¡¡¡¡static¡¡boolean¡¡gcrun¡¡=¡¡false£»¡¡¡¡
¡¡¡¡static¡¡boolean¡¡f¡¡=¡¡false£»¡¡¡¡
¡¡¡¡static¡¡int¡¡created¡¡=¡¡0£»¡¡¡¡
¡¡¡¡static¡¡int¡¡finalized¡¡=¡¡0£»¡¡¡¡
¡¡¡¡int¡¡i£»¡¡¡¡
¡¡¡¡Chair£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡i¡¡=¡¡£«£«created£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨created¡¡==¡¡47£©¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨Created¡¡47¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
¡¡¡¡protected¡¡void¡¡finalize£¨£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡if£¨£¡gcrun£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡gcrun¡¡=¡¡true£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Beginning¡¡to¡¡finalize¡¡after¡¡¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡created¡¡£«¡¡¡¨¡¡Chairs¡¡have¡¡been¡¡created¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡if£¨i¡¡==¡¡47£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Finalizing¡¡Chair¡¡#47£»¡¡¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨Setting¡¡flag¡¡to¡¡stop¡¡Chair¡¡creation¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡f¡¡=¡¡true£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡finalized£«£«£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨finalized¡¡¡·=¡¡created£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡106¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡108¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨All¡¡¡¨¡¡£«¡¡finalized¡¡£«¡¡¡¨¡¡finalized¡¨£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
public¡¡class¡¡Garbage¡¡£û¡¡¡¡
¡¡¡¡public¡¡static¡¡void¡¡main£¨String£§£§¡¡args£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡if£¨args¡£length¡¡==¡¡0£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£err¡£println£¨¡¨Usage£º¡¡n¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨java¡¡Garbage¡¡beforen¡¡¡¡or£ºn¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¨java¡¡Garbage¡¡after¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡return£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡while¡¡£¨£¡Chair¡£f£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡new¡¡Chair£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡new¡¡String£¨¡¨To¡¡take¡¡up¡¡space¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨After¡¡all¡¡Chairs¡¡have¡¡been¡¡created£ºn¡¨¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨total¡¡created¡¡=¡¡¡¨¡¡£«¡¡Chair¡£created¡¡£«¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¨£»¡¡total¡¡finalized¡¡=¡¡¡¨¡¡£«¡¡Chair¡£finalized£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨args£§0£§¡£equals£¨¡¨before¡¨£©£©¡¡£û¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨gc£¨£©£º¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£gc£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨runFinalization£¨£©£º¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£runFinalization£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡£ý¡¡¡¡
¡¡¡¡¡¡¡¡System¡£out¡£println£¨¡¨bye£¡¡¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡if£¨args£§0£§¡£equals£¨¡¨after¡¨£©£©¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡System¡£runFinalizersOnExit£¨true£©£»¡¡¡¡
¡¡¡¡£ý¡¡¡¡
£ý¡¡///£º~¡¡¡¡
¡¡¡¡
ÉÏÃæÕâ¸ö³ÌÐò´´½¨ÁËÐí¶àChair¡¡¶ÔÏ󣬶øÇÒÔÚÀ¬»øÊÕ¼¯Æ÷¿ªÊ¼ÔËÐкóµÄijЩʱºò£¬³ÌÐò»áÍ£Ö¹´´½¨Chair¡£¡¡
ÓÉÓÚÀ¬»øÊÕ¼¯Æ÷¿ÉÄÜÔÚÈκÎʱ¼äÔËÐУ¬ËùÒÔÎÒÃDz»ÄÜ׼ȷ֪µÀËüÔÚºÎʱÆô¶¯¡£Òò´Ë£¬³ÌÐòÓÃÒ»¸öÃûΪgcrun¡¡
µÄ±ê¼ÇÀ´Ö¸³öÀ¬»øÊÕ¼¯Æ÷ÊÇ·ñÒѾ¿ªÊ¼ÔËÐС£ÀûÓõڶþ¸ö±ê¼Ç¡¡f£¬Chair¡¡¿É¸æËß¡¡main£¨£©ËüӦֹͣ¶ÔÏóµÄÉú¡¡
³É¡£ÕâÁ½¸ö±ê¼Ç¶¼ÊÇÔÚ¡¡finalize£¨£©ÄÚ²¿ÉèÖõģ¬Ëüµ÷ÓÃÓÚÀ¬»øÊÕ¼¯Æڼ䡣¡¡¡¡
ÁíÁ½¸ö¡¡static¡¡±äÁ¿¡ª¡ªcreated¡¡ÒÔ¼°finalized¡ª¡ª·Ö±ðÓÃÓÚ¸ú×ÙÒÑ´´½¨µÄ¶ÔÏóÊýÁ¿ÒÔ¼°À¬»øÊÕ¼¯Æ÷ÒѽøÐС¡
ÍêÊÕβ¹¤×÷µÄ¶ÔÏóÊýÁ¿¡£×îºó£¬Ã¿¸ö¡¡Chair¡¡¶¼ÓÐËü×Ô¼ºµÄ£¨·Ç¡¡static£©int¡¡i£¬ËùÒÔÄܸú×ÙÁ˽âËü¾ßÌåµÄ±à¡¡
ºÅÊǶàÉÙ¡£±àºÅΪ47¡¡µÄChair¡¡½øÐÐÍêÊÕβ¹¤×÷ºó£¬±ê¼Ç»áÉèΪtrue¡¡£¬×îÖÕ½áÊøChair¡¡¶ÔÏóµÄ´´½¨¹ý³Ì¡£¡¡¡¡
ËùÓÐÕâЩ¶¼ÔÚmain£¨£©µÄÄÚ²¿½øÐСª¡ªÔÚÏÂÃæÕâ¸öÑ»·À¡¡¡¡
¡¡¡¡
while£¨£¡Chair¡£f£©¡¡£û¡¡¡¡
new¡¡Chair£¨£©£»¡¡¡¡
new¡¡String£¨¡¨To¡¡take¡¡up¡¡space¡¨£©£»¡¡¡¡
£ý¡¡¡¡
¡¡¡¡
´ó¼Ò¿ÉÄÜ»áÒÉ»óÕâ¸öÑ»·Ê²Ã´Ê±ºò»áÍ£ÏÂÀ´£¬ÒòΪÄÚ²¿Ã»ÓÐÈκθı䡡Chair¡£f¡¡ÖµµÄÓï¾ä¡£È»¶ø£¬finalize£¨£©¡¡
½ø³Ì»á¸Ä±äÕâ¸öÖµ£¬Ö±ÖÁ×îÖÕ¶Ô±àºÅ¡¡47¡¡µÄ¶ÔÏó½øÐÐÊÕβ´¦Àí¡£¡¡¡¡
ÿ´ÎÑ»·¹ý³ÌÖд´½¨µÄ¡¡String¡¡¶ÔÏóÖ»ÊÇÊôÓÚ¶îÍâµÄÀ¬»ø£¬ÓÃÓÚÎüÒýÀ¬»øÊÕ¼¯Æ÷¡ª¡ªÒ»µ©À¬»øÊÕ¼¯Æ÷¶Ô¿ÉÓÃÄÚ¡¡
´æµÄÈÝÁ¿¸Ðµ½¡°½ôÕŲ»°²¡±£¬¾Í»á¿ªÊ¼¹Ø×¢Ëü¡£¡¡¡¡
ÔËÐÐÕâ¸ö³ÌÐòµÄʱºò£¬ÌṩÁËÒ»¸öÃüÁîÐÐ×Ô±äÁ¿¡°before¡±»òÕß¡°after¡±¡£ÆäÖУ¬¡°before¡±×Ô±äÁ¿»áµ÷Óá¡
System¡£gc£¨£©·½·¨£¨Ç¿ÖÆÖ´ÐÐÀ¬»øÊÕ¼¯Æ÷£©£¬Í¬Ê±»¹»áµ÷Óá¡System¡£runFinalization£¨£©·½·¨£¬ÒÔ±ã½øÐÐÊÕβ¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡107¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡109¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¹¤×÷¡£ÕâЩ·½·¨¶¼¿ÉÔÚ¡¡Java¡¡1¡£0¡¡ÖÐʹÓ㬵«Í¨¹ýʹÓá°after¡±×Ô±äÁ¿¶øµ÷ÓõÄrunFinalizersOnExit£¨£©·½¡¡
·¨È´Ö»ÓÐJava¡¡1¡£1¡¡¼°ºóÐø°æ±¾ÌṩÁ˶ÔËüµÄÖ§³Ö£¨×¢ÊÍ¢Û£©¡£×¢Òâ¿ÉÔÚ³ÌÐòÖ´ÐеÄÈκÎʱºòµ÷ÓÃÕâ¸ö·½·¨£¬¡¡
¶øÇÒÊÕβ³ÌÐòµÄÖ´ÐÐÓëÀ¬»øÊÕ¼¯Æ÷ÊÇ·ñÔËÐÐÊÇÎ޹صġ£¡¡¡¡
¡¡¡¡
¢Û£º²»ÐÒµÄÊÇ£¬Java¡¡1¡£0¡¡²ÉÓõÄÀ¬»øÊÕ¼¯Æ÷·½°¸ÓÀÔ¶²»ÄÜÕýÈ·µØµ÷ÓÃfinalize£¨£©¡£Òò´Ë£¬finalize£¨£©·½·¨¡¡
¡¡£¨ÌرðÊÇÄÇЩÓÃÓڹرÕÎļþµÄ£©ÊÂʵÉϾ³£¶¼²»»áµÃµ½µ÷Óá£ÏÖÔÚÓÐЩÎÄÕÂÉù³ÆËùÓÐÊÕβģ¿é¶¼»áÔÚ³ÌÐòÍË¡¡
³öµÄʱºòµÃµ½µ÷Ó᪡ª¼´Ê¹µ½³ÌÐòÖÐÖ¹µÄʱºò£¬À¬»øÊÕ¼¯Æ÷ÈÔδÕë¶ÔÄÇЩ¶ÔÏó²ÉÈ¡Ðж¯¡£Õâ²¢²»ÊÇÕæʵµÄÇé¡¡
¿ö£¬ËùÒÔÎÒÃǸù±¾²»ÄÜÖ¸Íûfinalize£¨£©ÄÜΪËùÓжÔÏó¶øµ÷Óá£ÌرðµØ£¬finalize£¨£©ÔÚJava¡¡1¡£0¡¡ÀXºõºÁÎÞ¡¡
Óô¦¡£¡¡¡¡
¡¡¡¡
Ç°ÃæµÄ³ÌÐòÏòÎÒÃǽÒʾ³ö£ºÔÚ¡¡Java¡¡1¡£1¡¡ÖУ¬ÊÕβģ¿é¿Ï¶¨»áÔËÐÐÕâÒ»ÐíŵÒѳÉΪÏÖʵ¡ª¡ªµ«Ç°ÌáÊÇÎÒÃÇÃ÷È·¡¡
µØÇ¿ÖÆËü²ÉÈ¡ÕâÒ»²Ù×÷¡£ÈôʹÓÃÒ»¸ö²»ÊÇ¡°before¡±»ò¡°after¡±µÄ×Ô±äÁ¿£¨Èç¡°none¡¡¡±£©£¬ÄÇôÁ½¸öÊÕβ¹¤¡¡
×÷¶¼²»»á½øÐУ¬¶øÇÒÎÒÃÇ»áµÃµ½ÏóÏÂÃæÕâÑùµÄÊä³ö£º¡¡¡¡
Created¡¡47¡¡¡¡
Beginning¡¡to¡¡finalize¡¡after¡¡8694¡¡Chairs¡¡have¡¡been¡¡created¡¡¡¡
Finalizing¡¡Chair¡¡#47£»¡¡Setting¡¡flag¡¡to¡¡stop¡¡Chair¡¡creation¡¡¡¡
After¡¡all¡¡Chairs¡¡have¡¡been¡¡created£º¡¡¡¡
total¡¡created¡¡=¡¡9834£»¡¡total¡¡finalized¡¡=¡¡108¡¡¡¡
bye£¡¡¡¡¡
¡¡¡¡
Òò´Ë£¬µ½³ÌÐò½áÊøµÄʱºò£¬²¢·ÇËùÓÐÊÕβģ¿é¶¼»áµÃµ½µ÷Óã¨×¢Ê͢ܣ©¡£ÎªÇ¿ÖƽøÐÐÊÕβ¹¤×÷£¬¿ÉÏȵ÷Óá¡
System¡£gc£¨£©£¬ÔÙµ÷ÓÃSystem¡£runFinalization£¨£©¡£ÕâÑù¿ÉÇå³ýµ½Ä¿Ç°ÎªÖ¹Ã»ÓÐʹÓõÄËùÓжÔÏó¡£ÕâÑù×öÒ»¡¡
¸öÉÔÏÔÆæ¹ÖµÄµØ·½ÊÇÔÚµ÷ÓÃrunFinalization£¨£©Ö®Ç°µ÷ÓÃgc£¨£©£¬Õâ¿´ÆðÀ´ËƺõÓë¡¡Sun¡¡¹«Ë¾µÄÎĵµËµÃ÷ÓÐЩµÖ¡¡
´¥£¬ËüÐû³ÆÊ×ÏÈÔËÐÐÊÕβģ¿é£¬ÔÙÊÍ·Å´æ´¢¿Õ¼ä¡£È»¶ø£¬ÈôÔÚÕâÀïÊ×Ïȵ÷ÓÃrunFinalization£¨£©£¬ÔÙµ÷Óá¡
gc£¨£©£¬ÊÕβģ¿é¸ù±¾²»»áÖ´ÐС£¡¡¡¡
¡¡¡¡
¢Ü£ºµ½Äã¶Áµ½±¾Êéʱ£¬ÓÐЩJava¡¡ÐéÄâ»ú£¨JVM£©¿ÉÄÜÒÑ¿ªÊ¼±íÏÖ³ö²»Í¬µÄÐÐΪ¡£¡¡¡¡
¡¡¡¡
Õë¶ÔËùÓжÔÏó£¬Java¡¡1¡£1¡¡ÓÐʱ֮ËùÒÔ»áĬÈÏΪÌø¹ýÊÕβ¹¤×÷£¬ÊÇÓÉÓÚËüÈÏΪÕâÑù×öµÄ¿ªÏúÌ«´ó¡£²»¹ÜÓÃÄÄÖÖ¡¡
·½·¨Ç¿ÖƽøÐÐÀ¬»øÊÕ¼¯£¬¶¼¿ÉÄÜ×¢Òâµ½±ÈûÓжîÍâÊÕβ¹¤×÷ʱ½Ï³¤µÄʱ¼äÑÓ³Ù¡£¡¡¡¡
4¡£4¡¡³ÉÔ±³õʼ»¯¡¡¡¡
Java¡¡¾¡×Ô¼ºµÄÈ«Á¦±£Ö¤ËùÓбäÁ¿¶¼ÄÜÔÚʹÓÃÇ°µÃµ½ÕýÈ·µÄ³õʼ»¯¡£Èô±»¶¨Òå³ÉÏà¶ÔÓÚÒ»¸ö·½·¨µÄ¡°¾Ö²