ÔÚ Java 8 ÖУ¬HotSpot ÐéÄâ»úµÄĬÈÏÀ¬»ø»ØÊÕÆ÷ÊÇ ParallelOld¡£ÔÚ Java 11 ÖУ¬Ä¬ÈÏ»ØÊÕÆ÷±ä³ÉÁË G1¡£
×¢Ò⣺´Ó¼¼ÊõÉϽ²£¬»ØÊÕÆ÷µÄÇл»ÊÇÔÚ Java 9 ÖнøÐеģ¬µ« G1 µÄÖ÷ÒªÔöÇ¿ÊÇÔÚ Java 10 ºÍ 11 ÖÐÍê³ÉµÄ¡£µ«Êµ¼ÊÉÏ£¬ºÜÉÙÓй«Ë¾Ê¹Óà Java LTS ÒÔÍâµÄ°æ±¾¡£
ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«ÌÖÂÛÀ¬»ø»ØÊÕÀíÂÛµÄһЩ»ù´¡ÖªÊ¶£¬ÒÔ¼°ÕâЩÀíÂÛÔÚ HotSpot ÖÐÊÇÈçºÎʵÏֵġ£ÕâÒ²½«½âÊÍΪʲôҪÇл» Java µÄĬÈÏÀ¬»ø»ØÊÕÆ÷£¬ÒÔ¼° Java À¬»ø»ØÊÕ·½·¨ÔÚ½üÀ´·¢ÉúµÄһЩ±ä»¯¡£
À¬»ø»ØÊÕÊÇϵͳµÄÒ»ÖÖ¡°ÇåÀí¡±»î¶¯£¬¶ÀÁ¢ÓÚÓ¦ÓóÌÐòµÄÖ÷´¦ÀíỊ̈߳¬ÊÔͼÕÒ³ö²»ÔÙ±»Ê¹ÓõÄÄÚ´æ²¢½«ÆäÊÍ·ÅÒÔ±ã¿ÉÒÔ¼ÌÐøÖØÓá£
Dijkstra ¶ÔÀ¬»ø»ØÊյĶ¨ÒåÇåÎúµØÖ¸³ö£¬ÒýÓüÆÊýÊÇ×Ô¶¯ÄÚ´æ¹ÜÀíµÄÒ»ÖÖÐÎʽ£¬µ«²»ÊôÓÚÀ¬»ø»ØÊÕ¡£
ÒýÓüÆÊý»áÔÚ³ÌÐòÔËÐÐʱ¸üÐÂÿ¸ö¶ÔÏóµÄÔªÊý¾Ý£¨ÀýÈ磬ÔÚ¶ÔÒ»¸öÒýÓÃÀàÐͶÔÏóµÄij¸ö×ֶθ³ÖµÊ±£©¡£ÔªÊý¾ÝµÄ¸üÐÂÐèÒªÔÚÓ¦ÓóÌÐòÏß³ÌÉϽøÐУ¬Òò´Ë²»ÄÜÇåÎúµØ½«Æä»®·ÖΪ¶ÀÁ¢µÄ»î¶¯¡£
»ØÊÕËã·¨´Ó root£¨Ò»×éÒÑÖªÊÇ´æ»î¶ÔÏ󣩿ªÊ¼£¬Í¨¹ý¸ú×ÙÖ¸ÕëÀ´È·¶¨´æ»î¶ÔÏó¡£
ÕâЩ¸ú×Ù»ØÊÕÆ÷ʵÏÖÁËͼËã·¨£¬½«¶ÑÄÚ´æ»®·ÖΪ´æ»îµÄºÍ¿É»ØÊյġ£
ÔÚÏÖ´úÀ¬»ø»ØÊÕÎÄÏ×ÖУ¬²¢·¢£¨Concurrent£©ºÍ²¢ÐУ¨Parallel£©¶¼±»ÓÃÀ´ÃèÊö»ØÊÕËã·¨¡£ËüÃÇÌýÆðÀ´ÏñÊÇͬÒå´Ê£¬µ«Êµ¼ÊÉÏÓÐ×ÅÍêÈ«²»Í¬µÄº¬Ò壺
ËüÃÇ¿ÉÒÔ±»¿´³ÉÊÇÁíÍâÁ½¸öÊõÓïµÄ¶ÔÁ¢Ã桪¡ª²¢·¢ÊÇ stop-the-world£¨STW£©µÄ¶ÔÁ¢Ã棬²¢ÐÐÊÇ single-thread£¨µ¥Ị̈߳©µÄ¶ÔÁ¢Ãæ¡£
ʵ¼ÊµÄÀ¬»ø»ØÊÕÆ÷·ÖΪ¶à¸ö½×¶Î£¬Ã¿¸ö½×¶Î»¹¿ÉÄܾ߱¸¶àÖÖÌØÕ÷¡£
ÀýÈ磬ij¸ö½×¶Î¿ÉÄÜÊǵ¥Ï̲߳¢·¢£¬»òÕßÊDz¢ÐÐ STW¡£
×¢Ò⣺²¢·¢»ØÊÕÆ÷±È STW »ØÊÕÆ÷Òª¸´ÔӵöࡣËüÃÇÔÚ¼ÆË㿪Ïú·½ÃæÒª´óµÃ¶à£¬¶øÇÒËüÃǵÄÐÐΪ»¹ÓÐÐèҪעÒâµÄµØ·½¡£
ÆäËûÄãÓ¦¸ÃÖªµÀµÄÀ¬»ø»ØÊÕÊõÓ
Exact ÊÇÒ»ÖÖ±£ÊØģʽ£¬È±·¦¾«È·µÄÐÅÏ¢£¬Òò´Ëͨ³£»áÔì³É¸ü´óµÄÄÚ´æÀË·Ñ¡£
һЩ×ÊÁÏ»¹Ìáµ½ÁËÒƶ¯»ØÊÕÆ÷¡ª¡ª°üÀ¨Ñ¹ËõºÍÇýÖðËã·¨¡£µ«ÕâÁ½ÖÖÀàÐÍÖ®¼äµÄ²îÒìÌ«´ó£¬°ÑËüÃÇ×éºÏÔÚÒ»Æðͨ³£Óô¦²»´ó¡£
·ÇÒƶ¯»ØÊÕÆ÷±»³ÆΪ¾ÍµØ»ØÊÕÆ÷¡£ÕâЩËã·¨ÐèÒªÖªµÀ¿ÉÓÃÄÚ´æ¿éµÄÁбí²ÅÄܹ»´¦ÀíÄÚ´æËéƬÒÔ¼°ºÏ²¢¿ÉÓõÄÄÚ´æ¿é¡£
ÎÒÃÇ´Ó¶¨Ò忪ʼ£¬ÏÈÀ´¿¼ÂÇһЩ»ù±¾µÄÊÂʵ£º
·Ö´ú¼ÙÉè»ùÓÚ¶ÔÃæÏò¶ÔÏóϵͳÔËÐÐʱÐÐΪµÄ¹Û²ì£¬Ëü´óÖ½«¶ÔÏó·ÖΪÁ½Àࣺ¶ÌÆÚµÄÁÙʱ¶ÔÏóºÍÓÃÓÚÖ´ÐгÌÐòÈÎÎñµÄ³¤ÆÚ¶ÔÏó¡£
×¢Ò⣺·Ö´ú»ØÊÕÆ÷²¢²»Ò»¶¨×ÜÊDZȷǷִú»ØÊÕÆ÷¸ü¸ßЧ£¬µ«¼¸ºõËùÓеÄÓ¦ÓóÌÐò¶¼»á´Ó·Ö´ú»ØÊÕÆ÷ÖлñµÃºÃ´¦¡£
»ØÊÕËã·¨µÄ mark-sweep-compact£¨¸ù¾Ý Blackburn ºÍ McKinley£©ÊÇÕâÑù¶¨ÒåµÄ£º
ÔÚ·Ö´ú»ØÊÕËã·¨ÖУ¬ÄêÇá´ú»ØÊÕÆ÷ºÍÀÏÄê´ú»ØÊÕÆ÷ͨ³£Ê¹ÓõÄÊÇÍêÈ«²»Í¬µÄËã·¨¡£
Õâµ¼ÖÂÎÒÃǺÜÄÑ׼ȷµØ¶Ô²»Í¬½×¶Î²ÉÓò»Í¬Ëã·¨µÄ»ØÊÕÆ÷½øÐйéÀà¡£ÀýÈ磬ÔÚ CMS ÖУ¬ÄêÇá´úÊÇͨ¹ýÇýÖðËã·¨ÄǽøÐлØÊյģ¬¶øÀÏÄê´úÊÇͨ¹ý±ê¼ÇÇå³ýËã·¨½øÐлØÊյģ¬Èç¹û²¢·¢»ØÊÕʧ°Ü£¨ÀýÈçÓÉÓÚËéƬ£©£¬ÔòÍ˻ص½±ê¼ÇѹËõËã·¨¡£
ÔÚ HotSpot ÖУ¬´«Í³µÄ»ØÊÕÆ÷½«ÄÚ´æ»®·ÖΪ 4 ¸öÄÚ´æ³Ø£¬·Ö±ðÊÇ Eden¡¢Survivor 0¡¢Survivor 1 ºÍ Tenured¡£Ç°Èý¸ö±»Í³³ÆΪÄêÇá´ú£¬Tenured ÊÇÀÏÄê´ú¡£
ÄêÇá´ú¿Õ¼äÊÇÔÚÄêÇá´ú»ØÊÕÖÜÆÚÖнøÐлØÊյģ¬Ê¹ÓÃÁ˲¢ÐÐ STW ÇýÖðËã·¨, ½«´æ»îµÄ¶ÔÏóתÒƵ½Ò»¸ö¿Õ¼ä¡£
»ØÊÕËã·¨ÔÚµ±Ç°»î¶¯µÄÄÚ´æ³ØÖбê¼Ç´æ»îµÄ¶ÔÏó£¬È»ºó½«Æä³·µ½·Ç»î¶¯µÄÄÚ´æ³ØÖС£ÔÚ»ØÊÕ½áÊøʱ£¬Á½¸ö¿Õ¼ä±»µßµ¹¹ýÀ´¡ª¡ª»î¶¯µÄÄÚ´æ³Ø±äΪ·Ç»î¶¯µÄ£¨¼´Îª¿Õ£©£¬¶ø·Ç»î¶¯µÄ±äΪ»î¶¯µÄ¡£ÓÐʱºòÕâÒ²±»½Ð×÷¡°°ëÇò¡±£¨hemispehric£©»ØÊÕ¡£
°ëÇò»ØÊÕ¿ÉÄÜ»áÀË·ÑÄÚ´æ¡£µ¥±éËã·¨ÎÞ·¨Ô¤ÏÈÖªµÀÕýÔÚ»ØÊÕµÄÄÚ´æÇøÓòÖÐÓжàÉÙ¶ÔÏóÊÇ´æ»îµÄ¡£ÕâÒâζ×ÅÓÃÓÚ´æ·ÅÇýÖð¶ÔÏóµÄÇøÓò±ØÐëºÍ±»ÇåÀíµÄÇøÓòÒ»Ñù´ó¡ª¡ªÒò´ËËã·¨ÐèÒªÁ½±¶ÓÚʵ¼Ê´æ»î¶ÔÏó´óСµÄÄÚ´æ¿Õ¼ä¡£
Ëü»¹Òâζ×Ų»¹ÜÔÚʲôʱºò¶¼ÓÐÒ»°ëµÄ¿Õ¼äÊǿյġ£ÕâЩÌص㵼ÖÂËü²»ÊÊÓÃÓÚÏÖ´ú¹¤×÷¸ºÔصÄÀÏÄê´úÀ¬»ø»ØÊÕ£¬ÒòΪÕâЩÀÏÄê´úµÄ¶ÔÏ󼯺ϿÉÄܴܺó£ºÊµ¼ÊÉÏ£¬ÔÚÉú²ú»·¾³ÖУ¬HotSpot »ØÊÕÆ÷²»»áʹÓðëÇò»ØÊÕËã·¨¡£
°ëÇò»ØÊÕËã·¨±»ÓÃÓÚ»ØÊÕÄêÇá´ú¡£Ëü·Ç³£ÊÊÓÃÓÚ·ûºÏ·Ö´ú¼ÙÉèµÄ¹¤×÷¸ºÔØ¡ª¡ª¼´ÄÚ´æÇøÓòÀï´ó²¿·Ö¶¼ÊÇÀ¬»ø¶ÔÏó¡£»ØÊÕÆ÷ÊÜÒæÓÚÕâÑùµÄÒ»¸öÊÂʵ£º´æ»î¶ÔÏó×ÜÊÇ´ÓÄêÇá´ú±»ÌáÉýµ½ÀÏÄê´ú¡£
ÇýÖð»ØÊÕÆ÷µÄÁíÒ»¸öÖ÷ÒªÓŵãÊÇËüÃÇ´¦Àí¿ÕÏпռäµÄ·½Ê½¡£×î¼òµ¥µÄ·½·¨ÊÇʹÓÃÖ¸Ïò¿ÕÏпռäµÄÖ¸Õ룬µ±´æ»î¶ÔÏó±»ÇýÖðʱ£¬ºÜ¡°×ÔÈ»¡±µØ±»Ñ¹Ëõ¡£
ÇýÖðËã·¨ÊÇ OpenJDK ÄêÇá´ú»ØÊÕÆ÷µÄµäÐÍËã·¨£¬ËüʹÓÃÁ˶ÔÏó¸ú×Ù¡£²»¹ý£¬»ØÊÕÖ»ÔÚÒ»¸ö½×¶ÎÖнøÐУ¬Ã»Óе¥¶ÀµÄ±ê¼Ç¡¢Çå³ý»òѹËõ½×¶Î¡£
¶ÔÏóµÄÉú´æÆÚͨ³£ÊÇδ֪µÄ£¬¶øÇÒÔÚʵ¼ÊÓ¦ÓóÌÐòÖлᶯ̬·¢Éú±ä»¯¡£Òò´Ë£¬×·×Ù¶ÔÏóµÄʵ¼ÊÉú´æÖÜÆÚÊDz»¿ÉÐеġ£
Ïà·´£¬HotSpot ¼Ç¼Á˶ÔÏóÔÚÀ¬»ø»ØÊÕ¹ý³ÌÖдæ»îÏÂÀ´µÄ´ÎÊý£¬Ö»ÐèÒªÔÚ¶ÔÏóÍ·²¿µÄÔªÊý¾ÝÀïÌí¼Ó¼¸¸ö±ÈÌصÄÐÅÏ¢£¬ÔÚ¶ÔÏó¾ÀúÁË×ã¹»¶àµÄÀ¬»ø»ØÊÕÖ®ºó£¬Ëü¾Í»á±»Òƶ¯£¨ÌáÉý£©µ½¸üÀϵÄÒ»´ú£¬Óɲ»Í¬µÄÀ¬»ø»ØÊÕÆ÷À´¹ÜÀí¡£
ÕâÖÖ»úÖÆÓëÓ¦ÓóÌÐòµÄÄÚ´æ·ÖÅäËٶȴæÔÚÒ»ÖÖÓÐȤµÄ½»»¥¡£Èç¹û·ÖÅäËٶȼӿ죬ÄÇôÄêÇá´ú½«¸ü¿ì±»ÌîÂú¡ª¡ªµ«¡°¶ÌÃü¶ÔÏó¡±µÄÔ¤ÆÚÊÙÃü£¨ÒÔºÁÃëΪµ¥Î»£©±£³Ö²»±ä¡£
Õâ¿ÉÄܻᵼÖ¸ü¶à¶ÔÏóÔÚ»ØÊÕÖÜÆÚÖдæ»îÏÂÀ´£¬´Ó¶øµ¼ÖÂÄêÇá´ú¿Õ¼ä³äÂúÁË»¹Ã»ÓÐ×ʸñÌáÉýµ½ÀÏÄê´úµÄ¶ÔÏó¡£ÔÚÕâÖÖÇé¿öÏ£¬JVM ±ðÎÞÑ¡Ôñ£¬Ö»ÄÜÌáÇ°ÌáÉýһЩ¶ÔÏ󡪡ªÕâµ¼ÖÂÁË¡°¹ýÔçÌáÉý¡±¡£
ºÜ¶àÕâÑùµÄ¶ÔÏóʵ¼ÊÉ϶¼ÊǶÌÃüµÄ£¬ÔÚ½øÈëÀÏÄê´úºóºÜ¿ì¾Í»áÏûʧ¡£¿ÉϧµÄÊÇ£¬JVM ûÓлØÊÕËüÃǵĻúÖÆ£¬ÒªµÈµ½ÀÏÄê´ú¿Õ¼äµÄÏÂÒ»¸ö»ØÊÕÖÜÆÚ²ÅÄÜ»ØÊÕËüÃÇ¡£
¿ª·¢ÈËÔ±¾³£¶ÔÀ¬»ø»ØÊÕËã·¨½øÐи´ÔÓÐÔ·ÖÎö£¨ÓÐʱºòÒ²½Ð×÷¡°´ó O¡±£©¡£È»¶ø£¬ÔÚʵ¼ùµ±ÖУ¬ÕâÖÖ×ö·¨Êµ¼ÊÉϲ¢²»ÊǺÜÁîÈËÂúÒâ¡£
ËûÃÇ¿ÉÄÜÌìÕæµØÈÏΪ±ê¼ÇºÍѹËõ½×¶ÎµÄʱ¼ä¸´ÔÓ¶ÈÓë»î¶¯¶ÔÏ󼯺ϵĴóС³ÉÏßÐÔ¹Øϵ£¬¶øÇå³ý½×¶ÎÓëÕû¸ö¶Ñ´óС³ÉÏßÐÔ¹Øϵ¡£
È»¶ø£¬¼´Ê¹²»¿¼ÂÇÔÚʵ¼ÊʵÏÖµ±ÖпÉÄÜÎÞ·¨ÇåÎúµØ½øÐн׶θôÀ루ÈçÉÏÃæÌÖÂÛµÄ HotSpot ÄêÇá´ú»ØÊÕÆ÷£©£¬ÈÔÈ»´æÔÚÒ»¸ö¸üÉî²ã´ÎµÄÎÊÌâ¡£
À¬»ø»ØÊÕ±¾ÖÊÉÏÊÇÒ»ÖÖͨÓÃËã·¨¡£ÕâÒâζ×Å´ó O ·ÖÎöÖеĹÌÓмÙÉ衪¡ªµ±Êý¾Ý¼¯Ôö´óʱ£¬Æð×÷ÓõÄÊÇÏÞÖÆÐÔÐÐΪ¡ª¡ªÊDz»ÕýÈ·µÄ¡£
Éú²ú»·¾³ÖеÄËã·¨ÐèÒªÔÚÃæ¶ÔËùÓпÉÄܵÄÊäÈëºÍ¹¤×÷¸ºÔرíÏÖ³ö¿É½ÓÊܵÄÐÐΪ¡£ËüÃǵĽ¥½üÐÔÐÐΪÓëÕûÌåÐÔÄÜÊDz»Æ¥ÅäµÄ¡£
»»¾ä»°Ëµ£¬»î¶¯¶ÔÏ󼯺ϺͶѴóС±¾ÖÊÉÏÊǶÀÁ¢±ä»¯µÄ£¨ÀýÈ磬²»Í¬µÄ¶ÔÏóͼÍØÆË)¡£ÕâÒâζ×ŶÔÓÚ²»Í¬µÄ¹¤×÷¸ºÔØ£¬Ëõ·ÅÒò×Ó»á²úÉú·Ç³£²»Ò»ÑùµÄЧ¹û¡£
ÀýÈ磬ѹËõʱÐèÒª¸´ÖÆ×Ö½Ú£¬Òò´Ë£¬¾¡¹ÜѹËõ½×¶ÎÔڻ¶ÔÏ󼯺ϵĴóСÉÏÊdzÊÏßÐԵģ¬µ«ÆäËûÒòËØ¿ÉÄÜÓëÒªÒƶ¯µÄ¶ÔÏó´óСÓйء£¶ÔÓÚ°üº¬´óÁ¿ÔªËصĴóÊý×飬ÕâÖÖ˵·¨¾Í¸ü¼ÓÕ¾²»×¡½Å¡£
¶ÔÓÚ¸÷ÖÖ²»Í¬ÐÎʽµÄ»ØÊÕËã·¨£¬»¹´æÔÚһЩÖÚËùÖÜÖªµÄ¶þ¼¶Ð§Ó¦¡£ÀýÈ磬ÔÚ¶ÔÖ»ÓÐÉÙÁ¿´æ»î¶ÔÏóµÄÄÚ´æÇøÓò£¨¡°Ï¡Êè¶Ñ¡±£©Ö´ÐÐѹËõʱ£¬»î¶¯µÄ¶ÔÏ󽫱»ºÏ²¢µ½¸üÃܼ¯µÄÇøÓò¡£Èç¹û¶ÔÏóµÄÉúÃüÖÜÆںܳ¤£¬ÄÇôÕâ¸öÇøÓò¶ÔÓÚºóÐøµÄ»ØÊÕÖÜÆÚÀ´Ëµ¾Í²»ÄÇôϡÊèÁË¡£
ÎÒÃÇ¿ÉÒÔ¿´µ½£¬Óë CMS Ö®ÀàµÄ¾ÍµØ»ØÊÕÆ÷Ïà±È£¬ÔÚ³ÌÐòµÄÕû¸öÉúÃüÖÜÆÚÖУ¬³¤ÊÙ¶ÔÏ󽫱£³ÖÏ¡Êè·Ö²¼¡£ÊÂʵÉÏ£¬Ëæ×Åʱ¼äµÄÍÆÒÆ£¬¿ÕÏпռ佫±äµÃÔ½À´Ô½ËéƬ»¯£¬¿ÕÏÐÄÚ´æ¿éÁбíµÄ¹ÜÀí½«±äµÃÔ½À´Ô½°º¹ó¡£
×ܵÄÀ´Ëµ£¬²»Í¬»ØÊÕ·½·¨µÄʱ¼äºÍ¿Õ¼ä³É±¾Ä£ÐÍÊDz»Í¬µÄ£¬¼òµ¥µÄËã·¨¸´ÔӶȷÖÎöÒ²²»ÊǺܹÜÓá£ÔÚ HotSpot ÖУ¬Èç¹ûûÓÐ×ã¹»µÄÁ¬Ðø¿Õ¼ä£¬¾ÍµØ»ØÊÕÆ÷×îÖÕ»áÍ˻ص½Ñ¹Ëõ»ØÊÕÆ÷¡£
ÎÒÃÇÌÖÂÛÁË Java ÐéÄâ»úµÄÀ¬»ø»ØÊÕ»úÖÆ¡£À¬»ø»ØÊÕÊǼÆËã»ú¿ÆѧµÄÒ»¸ö³ÉÊìµÄÁìÓò£¬HotSpot µÄÀ¬»ø»ØÊÕÆ÷¾¹ýÁËÁ¼ºÃµÄ²âÊÔ£¬¿ÉÒԺܺõش¦Àí´ó¶Ñ¹¤×÷¸ºÔØ¡£´ó¶àÊý Java Ó¦ÓóÌÐò²»ÐèÒª¹ý¶àµØµ£ÐÄÀ¬»ø»ØÊÕÐÐΪ¡£
Èç¹û¶ÔÀ¬»ø»ØÊÕÐÐΪ½ÏΪÃô¸Ð£¬ÄÇôÉîÈëÁ˽âÀ¬»ø»ØÊÕµÄÔÔò£¨ÒÔ¼°ËüÔÚ JVM ÖÐÊÇÈçºÎʵÏֵģ©¶ÔÓÚ¿ª·¢ÈËÔ±À´Ëµ»áºÜÓаïÖú¡£
ÔÚ×î½üµÄ Java °æ±¾ÖУ¬À¬»ø»ØÊÕ×ÓϵͳµÄ¸Ä½øÔٴγÉΪ¹Ø×¢µÄÈȵ㡣ҪÍêÈ«Àí½âÕâЩ±ä»¯£¬¾ÍÒªºÜºÃµØÕÆÎÕÕâЩ»ù´¡ÖªÊ¶¡£ºóÐøµÄÎÄÕ½«ÏêϸÌÖÂÛÕâЩ¸üУ¬ÀýÈ磬Ϊʲô¸Ä±äÁËĬÈÏ»ØÊÕÆ÷¡¢Õâ¶ÔÉý¼¶µ½ Java 11 µÄÍŶÓÒâζ×Åʲô¡£
ÁìȡרÊô 10ÔªÎÞÃż÷ȯ
˽Ïí×îР¼¼Êõ¸É»õ