JAVA GC
Êܵ½“15ÄêÄã»ýÀÛÁËʲô”Ò»ÎĵÄÕ𶯣¬ÌرðÊÕ¼¯¸ÃÎÄѧϰ
Java gc
¹Ø¼ü×Ö: java gc, À¬»ø»ØÊÕ»úÖÆ
1.JVMµÄgc¸ÅÊö
¡¡¡¡gc¼´À¬»øÊÕ¼¯»úÖÆÊÇÖ¸jvmÓÃÓÚÊÍ·ÅÄÇЩ²»ÔÙʹÓõĶÔÏóËùÕ¼ÓõÄÄÚ´æ¡£javaÓïÑÔ²¢²»ÒªÇójvmÓÐgc£¬Ò²Ã»Óй涨gcÈçºÎ¹¤×÷¡£²»¹ý³£ÓõÄjvm¶¼ÓÐgc£¬¶øÇÒ´ó¶àÊýgc¶¼Ê¹ÓÃÀàËÆµÄËã·¨¹ÜÀíÄÚ´æºÍÖ´ÐÐÊÕ¼¯²Ù×÷¡£
¡¡¡¡ÔÚ³ä·ÖÀí½âÁËÀ¬»øÊÕ¼¯Ëã·¨ºÍÖ´Ðйý³Ìºó£¬²ÅÄÜÓÐЧµÄÓÅ»¯ËüµÄÐÔÄÜ¡£ÓÐЩÀ¬»øÊÕ¼¯×¨ÓÃÓÚÌØÊâµÄÓ¦ÓóÌÐò¡£±ÈÈ磬ʵʱӦÓóÌÐòÖ÷ÒªÊÇΪÁ˱ÜÃâÀ¬»øÊÕ¼¯Öжϣ¬¶ø´ó¶àÊýOLTPÓ¦ÓóÌÐòÔò×¢ÖØÕûÌåЧÂÊ¡£Àí½âÁËÓ¦ÓóÌÐòµÄ¹¤×÷¸ººÉºÍjvmÖ§³ÖµÄÀ¬»øÊÕ¼¯Ëã·¨£¬±ã¿ÉÒÔ½øÐÐÓÅ»¯ÅäÖÃÀ¬»øÊÕ¼¯Æ÷¡£
¡¡¡¡À¬»øÊÕ¼¯µÄÄ¿µÄÔÚÓÚÇå³ý²»ÔÙʹÓõĶÔÏó¡£gcͨ¹ýÈ·¶¨¶ÔÏóÊÇ·ñ±»»î¶¯¶ÔÏóÒýÓÃÀ´È·¶¨ÊÇ·ñÊÕ¼¯¸Ã¶ÔÏó¡£gcÊ×ÏÈÒªÅжϸöÔÏóÊÇ·ñÊÇʱºò¿ÉÒÔÊÕ¼¯¡£Á½ÖÖ³£Óõķ½·¨ÊÇÒýÓüÆÊýºÍ¶ÔÏóÒýÓñéÀú¡£
¡¡¡¡1.1.ÒýÓüÆÊý
¡¡¡¡ÒýÓüÆÊý´æ´¢¶ÔÌØ¶¨¶ÔÏóµÄËùÓÐÒýÓÃÊý£¬Ò²¾ÍÊÇ˵£¬µ±Ó¦ÓóÌÐò´´½¨ÒýÓÃÒÔ¼°ÒýÓó¬³ö·¶Î§Ê±£¬jvm±ØÐëÊʵ±Ôö¼õÒýÓÃÊý¡£µ±Ä³¶ÔÏóµÄÒýÓÃÊýΪ0ʱ£¬±ã¿ÉÒÔ½øÐÐÀ¬»øÊÕ¼¯¡£
¡¡¡¡1.2.¶ÔÏóÒýÓñéÀú
¡¡¡¡ÔçÆÚµÄjvmʹÓÃÒýÓüÆÊý£¬ÏÖÔÚ´ó¶àÊýjvm²ÉÓöÔÏóÒýÓñéÀú¡£¶ÔÏóÒýÓñéÀú´ÓÒ»×é¶ÔÏó¿ªÊ¼£¬ÑØ×ÅÕû¸ö¶ÔÏóͼÉϵÄÿÌõÁ´½Ó£¬µÝ¹éÈ·¶¨¿Éµ½´ï£¨reachable£©µÄ¶ÔÏó¡£Èç¹ûij¶ÔÏó²»ÄÜ´ÓÕâЩ¸ù¶ÔÏóµÄÒ»¸ö£¨ÖÁÉÙÒ»¸ö£©µ½´ï£¬Ôò½«Ëü×÷ΪÀ¬»øÊÕ¼¯¡£ÔÚ¶ÔÏó±éÀú½×¶Î£¬gc±ØÐë¼ÇסÄÄЩ¶ÔÏó¿ÉÒÔµ½´ï£¬ÒÔ±ãɾ³ý²»¿Éµ½´ïµÄ¶ÔÏó£¬Õâ³ÆÎª±ê¼Ç£¨marking£©¶ÔÏó¡£
¡¡¡¡ÏÂÒ»²½£¬gcҪɾ³ý²»¿Éµ½´ïµÄ¶ÔÏó¡£É¾³ýʱ£¬ÓÐЩgcÖ»ÊǼòµ¥µÄɨÃè¶ÑÕ»£¬É¾³ýδ±ê¼ÇµÄδ±ê¼ÇµÄ¶ÔÏ󣬲¢ÊÍ·ÅËüÃǵÄÄÚ´æÒÔÉú³ÉеĶÔÏó£¬Õâ½Ð×öÇå³ý£¨sweeping£©¡£ÕâÖÖ·½·¨µÄÎÊÌâÔÚÓÚÄÚ´æ»á·Ö³ÉºÃ¶àС¶Î£¬¶øËüÃDz»×ãÒÔÓÃÓÚеĶÔÏ󣬵«ÊÇ×éºÏÆðÀ´È´ºÜ´ó¡£Òò´Ë£¬Ðí¶àgc¿ÉÒÔÖØÐÂ×éÖ¯ÄÚ´æÖеĶÔÏ󣬲¢½øÐÐѹËõ£¨compact£©£¬ÐγɿÉÀûÓõĿռ䡣
¡¡¡¡Îª´Ë£¬gcÐèҪֹͣÆäËûµÄ»î¶¯»î¶¯¡£ÕâÖÖ·½·¨Òâζ×ÅËùÓÐÓëÓ¦ÓóÌÐòÏà¹ØµÄ¹¤×÷Í£Ö¹£¬Ö»ÓÐgcÔËÐС£½á¹û£¬ÔÚÏìÓ¦ÆÚ¼äÔö¼õÁËÐí¶à»ìÔÓÇëÇó¡£ÁíÍ⣬¸ü¸´ÔÓµÄgc²»¶ÏÔö¼Ó»òͬʱÔËÐÐÒÔ¼õÉÙ»òÕßÇå³ýÓ¦ÓóÌÐòµÄÖжϡ£ÓеÄgcʹÓõ¥Ïß³ÌÍê³ÉÕâÏ×÷£¬ÓеÄÔò²ÉÓöàÏß³ÌÒÔÔö¼ÓЧÂÊ¡£
¡¡¡¡2.¼¸ÖÖÀ¬»ø»ØÊÕ»úÖÆ
¡¡¡¡2.1.±ê¼Ç£Çå³ýÊÕ¼¯Æ÷
¡¡¡¡ÕâÖÖÊÕ¼¯Æ÷Ê×ÏȱéÀú¶ÔÏóͼ²¢±ê¼Ç¿Éµ½´ïµÄ¶ÔÏó£¬È»ºóɨÃè¶ÑÕ»ÒÔѰÕÒδ±ê¼Ç¶ÔÏó²¢ÊÍ·ÅËüÃǵÄÄÚ´æ¡£ÕâÖÖÊÕ¼¯Æ÷Ò»°ãÊ
Ïà¹ØÎĵµ£º
·´ÉäµÄ¸ÅÄîÊÇÓÉSmithÔÚ1982ÄêÊ×´ÎÌá³öµÄ£¬Ö÷ÒªÊÇÖ¸³ÌÐò¿ÉÒÔ·ÃÎÊ¡¢¼ì²âºÍÐÞ¸ÄËü±¾Éí״̬»òÐÐΪµÄÒ»ÖÖÄÜÁ¦¡£ÕâÒ»¸ÅÄîµÄÌá³öºÜ¿ìÒý·¢Á˼ÆËã»ú¿ÆÑ§ÁìÓò¹ØÓÚÓ¦Ó÷´ÉäÐÔµÄÑо¿¡£ËüÊ×Ïȱ»³ÌÐòÓïÑÔµÄÉè¼ÆÁìÓòËù²ÉÓÃ,²¢ÔÚLispºÍÃæÏò¶ÔÏó·½ÃæÈ¡µÃÁ˳ɼ¨¡£ÆäÖÐLEAD/LEAD++ ¡¢OpenC++ ¡¢MetaXaºÍOpenJavaµÈ¾ÍÊÇ»ùÓÚ·´Éä»úÖÆµÄÓïÑÔ¡£×î½ü ......
µÚÒ»´Î·¢,Ñ¡¸öÄѶÈÊʵ±ÖеÄ:ÎÒ¸Õ±Ïҵʱ²Î¼ÓµÄÒ»´Î±ÊÊÔ.
Ìâ:¶ÔÈÎÒâÊäÈëÈëµÄÒ»¸ö×Ö·û´®£¬°ÑÊý×Ö´ÓСµ½´óÅÅÁУ¬×ÖďĿÐòÅÅÁÐ,²¢ÇÒÊäÈëºó×ÖĸÓëÊý¾Ý½»ÌæÅÅÁС£
Èç:"5s3fa72cs4z134556sdd"Ö´ÐкóΪ"z1s2s3s3f4d4d5c5a56".
´ó¼Ò¿ÉÒÔÊÔÒ»ÏÂ,¹²Í¬Ñ§Ï°Âð?ÏÂÃæÊÇÎÒµ±³¡×öµÄ,Ïëµ½ÄÄдµ½ÄÄ,Ëã·¨¿Ï¶¨²»ÓÅ,½ö¹©²Î¿¼.
import java.util ......
Java ÓïÑÔÊÇÒ»ÖÖ¾ßÓж¯Ì¬ÐԵĽâÊÍÐͱà³ÌÓïÑÔ£¬µ±Ö¸¶¨³ÌÐòÔËÐеÄʱºò£¬ Java ÐéÄâ»ú¾Í½«±àÒëÉú³ÉµÄ . class Îļþ°´ÕÕÐèÇóºÍÒ»¶¨µÄ¹æÔò¼ÓÔØ½øÄڴ棬²¢×éÖ¯³ÉΪһ¸öÍêÕûµÄ Java Ó¦ÓóÌÐò¡£ Java ÓïÑÔ°Ñÿ¸öµ¥¶ÀµÄÀà Class ºÍ½Ó¿Ú Implements ±àÒë³Éµ¥¶ÀµÄÒ»¸ö . class Îļþ£¬ÕâЩÎļþ¶ÔÓÚ Java ÔËÐл·¾³À´Ëµ¾ÍÊÇÒ»¸ö¸ö¿ÉÒÔ¶¯Ì¬ ......
³ÌÐòÉè¼ÆÊǽâ¾öÎÊÌâ˼·µÄ¾ßÌ廯.¾ÍÏñ½¨ÔìÒ»×ù·¿×ÓÒ»Ñù£¬ÓÃʲôÑùµÄ²ÄÁÏ,½¨Ôìʲô·ç¸ñµÄ½¨Öþ,¾ßÌåÿ¸öλÖÃÊÇʲô... ²»Í¬µÄ½¨Öþʦ»áÓв»Í¬µÄ·½·¨. ¶ø°ÑÍê³ÉÄ³Ò»ÌØ¶¨ÎÊÌâµÄ½â¾ö˼·¹æ·¶Ò»Ï ¾Í¿ÉÒÔ³Æ×÷ΪһÖÖÉè¼ÆÄ£Ê½.
³ÌÐòÉè¼ÆÖÐÉè¼ÆÄ£Ê½ÎªÎÒÃÇÔÚijһÎÊÌâÓòÌṩÁËÒ»ÖÖÁ¼ºÃµÄʵÏÖ·½·¨²Î¿¼£¬¿ÉÒÔ´ó´óʵÏÖ¸´Óú͸ßЧ¡£
ÏÂÃæÎ ......