Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
JVM×Ô¶¯ÄÚ´æ¹ÜÀí»úÖÆ
 
  1555  次浏览      27
 2018-7-3
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚcnblogs£¬½éÉÜÁËJavaÔËÐÐʱÊý¾ÝÇø£¬¶ÔÏó¡°ÒÑËÀ¡±µÄÅж¨Ëã·¨£¬À¬»øÊÕ¼¯Ëã·¨£¬À¬»øÊÕ¼¯Æ÷¡£

Java×Ô¶¯ÄÚ´æ¹ÜÀí»úÖÆ°üº¬Á½²¿·Ö£ºÄÚ´æ·ÖÅäºÍÄÚ´æ»ØÊÕ£¬ÒªÏëÀí½âÄÚ´æ·ÖÅäºÍ»ØÊյĻúÖÆ£¬ÔòÐèÒªÁ˽âÏÂJavaÄÚ´æÇøÓò£¨JavaÔËÐÐʱÊý¾ÝÇø£©£¬ÕâÆªËæ±Ê½«°´ÕÕÏÂÃæµÄÏßË÷½øÐÐÖð²½½âÎö£º

1.JavaÔËÐÐʱÊý¾ÝÇø

2.¶ÔÏó¡°ÒÑËÀ¡±µÄÅж¨Ëã·¨

3.À¬»øÊÕ¼¯Ëã·¨

4.À¬»øÊÕ¼¯Æ÷

5.½áÊøÓï

ºÃ£¬½ÓÏÂÀ´ÎÒÃÇÒ»Ò»À´¿´¡£

Ò»¡¢JavaÔËÐÐʱÊý¾ÝÇø

¸ù¾Ý¡¶JavaÐéÄâ»ú¹æ·¶¡·µÄ¹æ¶¨£¬JavaÐéÄâ»úËù¹ÜÀíµÄÄڴ潫»á°üÀ¨Èçϼ¸¸öÔËÐÐʱÊý¾ÝÇøÓò

³ÌÐò¼ÆÊýÆ÷£ºÓÃÀ´¼Ç¼µ±Ç°Ïß³ÌËùÖ´ÐеÄ×Ö½ÚÂëÖ¸ÁîµÄÐкÅָʾÆ÷¡£×Ö½ÚÂë¼ÆÊ±Æ÷ÐèҪͨ¹ý¸Ä±ä¸ÄÖµÀ´Ñ¡È¡ÏÂÒ»ÌõÐèÒªÖ´ÐеÄ×Ö½ÚÂëÖ¸¶¨£¬·ÖÖ§¡¢Ñ­»·¡¢Ìø×ª¡¢Òì³£´¦Àí¡¢Ïָ̻߳´µÈ»ù´¡¹¦Äܶ¼ÐèÒªÒÀÀµÕâ¸öָʾÆ÷À´Íê³É¡£³ÌÐò¼ÆÊýÆ÷ÊÇΨһһ¸öûÓй涨ÈκÎOutOfMemoryErrorÇé¿öµÄÇøÓò¡£

JavaÐéÄâ»úÕ»£ºÐéÄâ»úÕ»ÃèÊöµÄÊÇJava·½·¨Ö´ÐеÄÄÚ´æÄ£ÐÍ£¬Ã¿¸ö·½·¨Ö´ÐÐʱ¶¼»á´´½¨Ò»¸öÕ»Ö¡ÓÃÀ´´æ´¢¾Ö²¿±äÁ¿±í£¨´æ·Å±àÒëÆ÷¿ÉÖªµÄ¸÷ÖÖ»ù±¾Êý¾ÝÀàÐÍ¡¢¶ÔÏóÒýÓúÍreturnAddressÀàÐÍ£¬ËùÐèµÄÄÚ´æ¿Õ¼äÔÚ±àÒëÆ÷Íê³É·ÖÅ䣩¡¢²Ù×÷ÊýÕ»¡¢¶¯Ì¬Á´½Ó¡¢·½·¨³ö¿ÚµÈÐÅÏ¢¡£JavaÐéÄâ»úÕ»ÓÐÁ½ÖÖÒì³£Çé¿ö£ºOutOfMemoryError£¨À©Õ¹Ê±ÎÞ·¨ÉêÇëµ½×ã¹»Äڴ棩ºÍStackOverflowError£¨Ïß³ÌÇëÇóµÄÕ»Éî¶È´óÓÚÐéÄâ»úËùÔÊÐíµÄÉî¶È£©¡£

±¾µØ·½·¨Õ»£ºÍ¬JavaÐéÄâ»úÕ»ÀàËÆ£¬Ö»²»¹ýJavaÐéÄâ»úջΪÐéÄâ»úÖ´ÐÐJava·½·¨·þÎñ£¬±¾µØ·½·¨Õ»ÎªÐéÄâ»úʹÓÃNative·½·¨·þÎñ¡£HotSpotÖ±½Ó½«Á½¸öÕ»ºÏ¶þΪһ¡£Ò²¹æ¶¨ÁËÁ½ÖÖÒì³££ºOutOfMemoryErrorºÍStackOverflowError¡£

¶Ñ£ºJVMËù¹ÜÀíµÄÄÚ´æÖÐ×î´óµÄÒ»¿é£¬Ò²ÊÇGC¹ÜÀíµÄÖ÷񻂿Óò¡£ÀíÂÛÉÏËùÓеĶÔÏóʵÀýºÍÊý×é¶¼ÒªÔÚ¶ÑÉÏ·ÖÅä¡£¶ÑµÄ´óСÊÇ¿ÉÒÔÀ©Õ¹µÄ£¬Í¨¹ý-XmsºÍ-Xms¿ØÖÆ£¬²¢ÇÒ¶ÑÎÞ·¨À©Õ¹µÄʱºò¾Í»á±¨OutOfMemoryErrorÒì³£¡£

·½·¨Çø£ºÓÃÀ´´æ´¢JVM¼ÓÔØµÄÀàÐÅÏ¢¡¢³£Á¿¡¢¾²Ì¬±äÁ¿¡¢¼´Ê±±àÒëÆ÷±àÒëºóµÄ´úÂëµÈÊý¾Ý¡£ËäÈ»JavaÐéÄâ»ú¹æ·¶°Ñ·½·¨ÇøÃèÊöΪ¶ÑµÄÒ»¸öÂß¼­²¿·Ö£¬µ«ÊÇΪÁ˺ͶÑÇø·Ö¿ªÀ´£¬ËüÒ²½ÐNon-Heap£¨·Ç¶Ñ£©¡£·½·¨ÇøÎÞ·¨Âú×ãÄÚ´æ·ÖÅäÐèÇóʱ£¬±¨OutOfMemoryErrorÒì³£¡£

Ö±½ÓÄڴ棺²¢²»ÊÇÐéÄâ»úÔËÐÐʱÊý¾ÝÇøµÄÒ»²¿·Ö£¬Ò²²»ÊÇJVM¹æ·¶Öж¨ÒåµÄÄÚ´æÇøÓò£¬µ«ÊÇÈ´±»¾­³£Ê¹Óá£JDK1.4ÖÐмÓÈëµÄNIOÀ࣬ÒýÈëÁË»ùÓÚͨµÀºÍ»º³åÇøµÄI/O·½Ê½£¬Ëû¿ÉÒÔÖ±½Ó·ÖÅä¶ÔÍâÄڴ棬ÒÔÌá¸ßÐÔÄÜ¡£²»ÊÕ¶Ñ´óСµÄÏÞÖÆ£¬µ«ÊÇ»áÊÜÎïÀíÄÚ´æµÄÔ¼Êø¡£Ò²»á±¨OutOfMemoryErrorÒì³£¡£

¸½Õ»µ½¶ÑµÄ¹ØÁªÀý×Ó£¨»ùÓÚHotSpot£©£º

¶þ¡¢¶ÔÏó¡°ÒÑËÀ¡±µÄÅж¨Ëã·¨

ÓÉÓÚ³ÌÐò¼ÆÊýÆ÷¡¢JavaÐéÄâ»úÕ»¡¢±¾µØ·½·¨Õ»¶¼ÊÇÏ̶߳ÀÏí£¬ÆäÕ¼ÓõÄÄÚ´æÒ²ÊÇËæÏß³ÌÉú¶øÉú¡¢ËæÏ߳̽áÊø¶ø»ØÊÕ¡£¶øJava¶ÑºÍ·½·¨ÇøÔò²»Í¬£¬Ï̹߳²Ïí£¬ÊÇGCµÄËù¹Ø×¢µÄ²¿·Ö¡£

ÔÚ¶ÑÖм¸ºõ´æÔÚ×ÅËùÓжÔÏó£¬GC֮ǰÐèÒª¿¼ÂÇÄÄЩ¶ÔÏó»¹»î×Ų»ÄÜ»ØÊÕ£¬ÄÄЩ¶ÔÏóÒѾ­ËÀÈ¥¿ÉÒÔ»ØÊÕ¡£

ÓÐÁ½ÖÖËã·¨¿ÉÒÔÅж¨¶ÔÏóÊÇ·ñ´æ»î£º

1.£©ÒýÓüÆÊýËã·¨£º¸ø¶ÔÏóÖÐÌí¼ÓÒ»¸öÒýÓüÆÊýÆ÷£¬Ã¿µ±Ò»¸öµØ·½Ó¦ÓÃÁ˶ÔÏ󣬼ÆÊýÆ÷¼Ó1£»µ±ÒýÓÃʧЧ£¬¼ÆÊýÆ÷¼õ1£»µ±¼ÆÊýÆ÷Ϊ0±íʾ¸Ã¶ÔÏóÒÑËÀ¡¢¿É»ØÊÕ¡£µ«ÊÇËüºÜÄѽâ¾öÁ½¸ö¶ÔÏóÖ®¼äÏ໥ѭ»·ÒýÓõÄÇé¿ö¡£

2.£©¿É´ïÐÔ·ÖÎöËã·¨£ºÍ¨¹ýһϵÁгÆÎª¡°GC Roots¡±µÄ¶ÔÏó×÷ΪÆðµã£¬´ÓÕâЩ½Úµã¿ªÊ¼ÏòÏÂËÑË÷£¬ËÑË÷Ëù×ß¹ýµÄ·¾¶³ÆÎªÒýÓÃÁ´£¬µ±Ò»¸ö¶ÔÏóµ½GC RootsûÓÐÈκÎÒýÓÃÁ´ÏàÁ¬£¨¼´¶ÔÏóµ½GC Roots²»¿É´ï£©£¬ÔòÖ¤Ã÷´Ë¶ÔÏóÒÑËÀ¡¢¿É»ØÊÕ¡£JavaÖпÉÒÔ×÷ΪGC RootsµÄ¶ÔÏó°üÀ¨£ºÐéÄâ»úÕ»ÖÐÒýÓõĶÔÏó¡¢±¾µØ·½·¨Õ»ÖÐNative·½·¨ÒýÓõĶÔÏó¡¢·½·¨Çø¾²Ì¬ÊôÐÔÒýÓõĶÔÏó¡¢·½·¨Çø³£Á¿ÒýÓõĶÔÏó¡£

ÔÚÖ÷Á÷µÄÉÌÓóÌÐòÓïÑÔ£¨ÈçÎÒÃǵÄJava£©µÄÖ÷Á÷ʵÏÖÖУ¬¶¼ÊÇͨ¹ý¿É´ïÐÔ·ÖÎöËã·¨À´Åж¨¶ÔÏóÊÇ·ñ´æ»îµÄ¡£

Èý¡¢À¬»øÊÕ¼¯Ëã·¨

1¡¢±ê¼Ç-Çå³ýËã·¨

×î»ù´¡µÄËã·¨£¬·Ö±ê¼ÇºÍÇå³ýÁ½¸ö½×¶Î£ºÊ×Ïȱê¼Ç´¦ËùÐèÒª»ØÊյĶÔÏó£¬ÔÚ±ê¼ÇÍê³Éºóͳһ»ØÊÕËùÓб»±ê¼ÇµÄ¶ÔÏó¡£

ËüÓÐÁ½µã²»×㣺һ¸öЧÂÊÎÊÌ⣬±ê¼ÇºÍÇå³ý¹ý³Ì¶¼Ð§Âʲ»¸ß£»Ò»¸öÊǿռäÎÊÌ⣬±ê¼ÇÇå³ýÖ®ºó»á²úÉú´óÁ¿²»Á¬ÐøµÄÄÚ´æË鯬£¨ÀàËÆÓÚÎÒÃǵçÄԵĴÅÅÌË鯬£©£¬¿Õ¼äËéÆ¬Ì«¶àµ¼ÖÂÐèÒª·ÖÅä´ó¶ÔÏóʱÎÞ·¨ÕÒµ½×ã¹»µÄÁ¬ÐøÄÚ´æ¶ø²»µÃ²»Ìáǰ´¥·¢ÁíÒ»´ÎÀ¬»ø»ØÊÕ¶¯×÷¡£

2¡¢¸´ÖÆËã·¨

ΪÁ˽â¾öЧÂÊÎÊÌ⣬³öÏÖÁË¡°¸´ÖÆ¡±Ëã·¨£¬Ëû½«¿ÉÓÃÄÚ´æ°´ÈÝÁ¿»®·ÖΪ´óСÏàµÈµÄÁ½¿é£¬Ã¿´ÎÖ»ÐèҪʹÓÃÆäÖÐÒ»¿é¡£µ±Ò»¿éÄÚ´æÓÃÍêÁË£¬½«»¹´æ»îµÄ¶ÔÏó¸´ÖƵ½ÁíÒ»¿éÉÏÃæ£¬È»ºóÔٰѸոÕÓÃÍêµÄÄÚ´æ¿Õ¼äÒ»´ÎÇåÀíµô¡£ÕâÑù¾Í½â¾öÁËÄÚ´æË鯬ÎÊÌ⣬µ«ÊÇ´ú¼Û¾ÍÊÇ¿ÉÒÔÓÃÄÚÈݾÍËõСΪԭÀ´µÄÒ»°ë¡£

3¡¢±ê¼Ç-ÕûÀíËã·¨

¸´ÖÆËã·¨ÔÚ¶ÔÏó´æ»îÂʽϸßʱ¾Í»á½øÐÐÆµ·±µÄ¸´ÖƲÙ×÷£¬Ð§Âʽ«½µµÍ¡£Òò´ËÓÖÓÐÁ˱ê¼Ç-ÕûÀíËã·¨£¬±ê¼Ç¹ý³Ìͬ±ê¼Ç-Çå³ýËã·¨£¬µ«ÊÇÔÚºóÐø²½Öè²»ÊÇÖ±½Ó¶Ô¶ÔÏó½øÐÐÇåÀí£¬¶øÊÇÈÃËùÓдæ»îµÄ¶ÔÏó¶¼ÏòÒ»²àÒÆ¶¯£¬È»ºóÖ±½ÓÇåÀíµô¶Ë±ß½çÒÔÍâµÄÄÚ´æ¡£

4¡¢·Ö´úÊÕ¼¯Ëã·¨

µ±Ç°ÉÌÒµÐéÄâ»úµÄGC¶¼ÊDzÉÓ÷ִúÊÕ¼¯Ëã·¨£¬ÕâÖÖËã·¨²¢Ã»ÓÐʲôеÄ˼Ï룬¶øÊǸù¾Ý¶ÔÏó´æ»îÖÜÆÚµÄ²»Í¬½«¶Ñ·ÖΪ£ºÐÂÉú´úºÍÀÏÄê´ú£¬·½·¨Çø³ÆÎªÓÀ¾Ã´ú£¨ÔÚеİ汾ÖÐÒѾ­½«ÓÀ¾Ã´ú·ÏÆú£¬ÒýÈëÁËÔª¿Õ¼äµÄ¸ÅÄÓÀ¾Ã´úʹÓõÄÊÇJVMÄÚ´æ¶øÔª¿Õ¼äÖ±½ÓʹÓÃÎïÀíÄڴ棩¡£

ÕâÑù¾Í¿ÉÒÔ¸ù¾Ý¸÷¸öÄê´úµÄÌØµã²ÉÓò»Í¬µÄÊÕ¼¯Ëã·¨¡£

ÐÂÉú´úÖеĶÔÏó¡°³¯ÉúϦËÀ¡±£¬Ã¿´ÎGCʱ¶¼»áÓдóÁ¿¶ÔÏóËÀÈ¥£¬ÉÙÁ¿´æ»î£¬Ê¹Óø´ÖÆËã·¨¡£ÐÂÉú´úÓÖ·ÖΪEdenÇøºÍSurvivorÇø£¨Survivor from¡¢Survivor to£©£¬´óС±ÈÀýĬÈÏΪ8:1:1¡£

ÀÏÄê´úÖеĶÔÏóÒòΪ¶ÔÏó´æ»îÂʸߡ¢Ã»ÓжîÍâ¿Õ¼ä½øÐзÖÅäµ£±££¬¾ÍʹÓñê¼Ç-Çå³ý»ò±ê¼Ç-ÕûÀíËã·¨¡£

вúÉúµÄ¶ÔÏóÓÅÏȽøÈ¥EdenÇø£¬µ±EdenÇøÂúÁËÖ®ºóÔÙʹÓÃSurvivor from£¬µ±Survivor from Ò²ÂúÁËÖ®ºó¾Í½øÐÐMinor GC£¨ÐÂÉú´úGC£©£¬½«EdenºÍSurvivor fromÖдæ»îµÄ¶ÔÏócopy½øÈëSurvivor to£¬È»ºóÇå¿ÕEdenºÍSurvivor from£¬Õâ¸öʱºòÔ­À´µÄSurvivor from³ÉÁËеÄSurvivor to£¬Ô­À´µÄSurvivor to³ÉÁËеÄSurvivor from¡£¸´ÖƵÄʱºò£¬Èç¹ûSurvivor to ÎÞ·¨ÈÝÄÉÈ«²¿´æ»îµÄ¶ÔÏó£¬Ôò¸ù¾ÝÀÏÄê´úµÄ·ÖÅäµ£±££¨ÀàËÆÓÚÒøÐеĴû¿îµ£±££©½«¶ÔÏócopy½øÈ¥ÀÏÄê´ú£¬Èç¹ûÀÏÄê´úÒ²ÎÞ·¨ÈÝÄÉ£¬Ôò½øÐÐFull GC£¨ÀÏÄê´úGC£©¡£

´ó¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú£ºJVMÖÐÓиö²ÎÊýÅäÖÃ-XX:PretenureSizeThreshold£¬Áî´óÓÚÕâ¸öÉèÖÃÖµµÄ¶ÔÏóÖ±½Ó½øÈëÀÏÄê´ú£¬Ä¿µÄÊÇΪÁ˱ÜÃâÔÚEdenºÍSurvivorÇøÖ®¼ä·¢Éú´óÁ¿µÄÄÚ´æ¸´ÖÆ¡£

³¤ÆÚ´æ»îµÄ¶ÔÏó½øÈëÀÏÄê´ú£ºJVM¸øÃ¿¸ö¶ÔÏó¶¨ÒåÒ»¸ö¶ÔÏóÄêÁ伯ÊýÆ÷£¬Èç¹û¶ÔÏóÔÚEden³öÉú²¢¾­¹ýµÚÒ»´ÎMinor GCºóÈÔÈ»´æ»î£¬²¢ÇÒÄܱ»SurvivorÈÝÄÉ£¬½«±»ÒÆÈëSurvivor²¢ÇÒÄêÁäÉ趨Ϊ1¡£Ã»°¾¹ýÒ»´ÎMinor GC£¬ÄêÁä¾Í¼Ó1£¬µ±ËûµÄÄêÁäµ½Ò»¶¨³Ì¶È£¨Ä¬ÈÏΪ15Ë꣬¿ÉÒÔͨ¹ýXX:MaxTenuringThresholdÀ´É趨£©£¬¾Í»áÒÆÈëÀÏÄê´ú¡£µ«ÊÇJVM²¢²»ÊÇÓÀÔ¶ÒªÇóÄêÁ䱨Ðë´ïµ½×î´óÄêÁä²Å»á½úÉýÀÏÄê´ú£¬Èç¹ûSurvivor ¿Õ¼äÖÐÏàͬÄêÁ䣨ÈçÄêÁäΪx£©ËùÓжÔÏó´óСµÄ×ܺʹóÓÚSurvivorµÄÒ»°ë£¬ÄêÁä´óÓÚµÈÓÚxµÄËùÓжÔÏóÖ±½Ó½øÈëÀÏÄê´ú£¬ÎÞÐèµÈµ½×î´óÄêÁäÒªÇó¡£

ËÄ¡¢À¬»øÊÕ¼¯Æ÷

À¬»øÊÕ¼¯Ëã·¨ÊÇ·½·¨ÂÛ£¬À¬»øÊÕ¼¯Æ÷ÊǾßÌåʵÏÖ¡£JVM¹æ·¶¶ÔÓÚÀ¬»øÊÕ¼¯Æ÷µÄÓ¦¸ÃÈçºÎʵÏÖûÓÐÈκι涨£¬Òò´Ë²»Í¬µÄ³§ÉÌ¡¢²»Í¬°æ±¾µÄÐéÄâ»úËùÌṩµÄÀ¬»øÊÕ¼¯Æ÷²î±ð½Ï´ó£¬ÕâÀïÖ»¿´HotSpotÐéÄâ»ú¡£

JDK7/8ºó£¬HotSpotÐéÄâ»úËùÓÐÊÕ¼¯Æ÷¼°×éºÏ£¨Á¬Ïߣ©ÈçÏ£º

1.SerialÊÕ¼¯Æ÷

SerialÊÕ¼¯Æ÷ÊÇ×î»ù±¾¡¢ÀúÊ·×î¾ÃµÄÊÕ¼¯Æ÷£¬ÔøÊÇÐÂÉú´úÊÖ»úµÄΨһѡÔñ¡£ËûÊǵ¥Ï̵߳ģ¬Ö»»áʹÓÃÒ»¸öCPU»òÒ»ÌõÊÕ¼¯Ïß³ÌÈ¥Íê³ÉÀ¬»øÊÕ¼¯¹¤×÷£¬²¢ÇÒËüÔÚÊÕ¼¯µÄʱºò£¬±ØÐëÔÝÍ£ÆäËûËùÓеŤ×÷Ị̈߳¬Ö±µ½Ëü½áÊø£¬¼´¡°Stop the World¡±¡£Í£µôËùÓеÄÓû§Ị̈߳¬¶ÔºÜ¶àÓ¦ÓÃÀ´ËµÄÑÒÔ½ÓÊÜ¡£±ÈÈçÄãÔÚ×öÒ»¼þÊÂÇ飬±»±ðÈËÇ¿ÖÆÍ£µô£¬ÄãÐÄÀï±¼ÌÚ¶ø¹ýµÄ¡°ÑòÍÕ¡±»¹ÊýµÄ¹ýÀ´Âð£¿

¾¡¹ÜÈç´Ë£¬ËüÈÔÈ»ÊÇÐéÄâ»úÔËÐÐÔÚclientģʽϵÄĬÈÏÐÂÉú´úÊÕ¼¯Æ÷£º¼òµ¥¶ø¸ßЧ£¨ÓëÆäËûÊÕ¼¯Æ÷µÄµ¥¸öÏß³ÌÏà±È£¬ÒòΪûÓÐÏß³ÌÇл»µÄ¿ªÏúµÈ£©¡£

¹¤×÷ʾÒâͼ£º

2.ParNewÊÕ¼¯Æ÷

ParNewÊÕ¼¯Æ÷ÊÇSerialÊÕ¼¯Æ÷µÄ¶àḬ̈߳汾£¬³ýÁËʹÓÃÁ˶àÏß³ÌÖ®Í⣬ÆäËûµÄÐÐΪ£¨ÊÕ¼¯Ëã·¨¡¢stop the world¡¢¶ÔÏó·ÖÅ乿Ôò¡¢»ØÊÕ²ßÂԵȣ©Í¬SerialÊÕ¼¯Æ÷Ò»Ñù¡£

ÊÇÐí¶àÔËÐÐÔÚServerģʽϵÄJVMÖÐÊ×Ñ¡µÄÐÂÉú´úÊÕ¼¯Æ÷£¬ÆäÖÐÒ»¸öºÜÖØ»¹ÒªµÄÔ­Òò¾ÍÊdzýÁËSerialÖ®Í⣬ֻÓÐËûÄܺÍÀÏÄê´úµÄCMSÊÕ¼¯Æ÷ÅäºÏ¹¤×÷¡£

¹¤×÷ʾÒâͼ£º

3.Parallel ScavengeÊÕ¼¯Æ÷

ÐÂÉú´úÊÕ¼¯Æ÷£¬²¢ÐеĶàÏß³ÌÊÕ¼¯Æ÷¡£ËüµÄÄ¿±êÊÇ´ïµ½Ò»¸ö¿É¿ØµÄÍÌÍÂÁ¿£¨¾ÍÊÇCPUÔËÐÐÓû§´úÂëµÄʱ¼äÓëCPU×ÜÏûºÄʱ¼äµÄ±ÈÖµ£¬¼´ ÍÌÍÂÁ¿=ÐÐÓû§´úÂëµÄʱ¼ä/[ÐÐÓû§´úÂëµÄʱ¼ä+À¬»øÊÕ¼¯Ê±¼ä]£©£¬ÕâÑù¿ÉÒÔ¸ßЧÂʵÄÀûÓÃCPUʱ¼ä£¬¾¡¿ìÍê³É³ÌÐòµÄÔËËãÈÎÎñ£¬ÊʺÏÔÚºǫ́ÔËËã¶ø²»ÐèҪ̫¶à½»»¥µÄÈÎÎñ¡£

4.Serial OldÊÕ¼¯Æ÷

Serial ÊÕ¼¯Æ÷µÄÀÏÄê´ú°æ±¾£¬µ¥Ị̈߳¬¡°±ê¼ÇÕûÀí¡±Ëã·¨£¬Ö÷ÒªÊǸøClientģʽϵÄÐéÄâ»úʹÓá£

ÁíÍ⻹¿ÉÒÔÔÚServerģʽÏ£º

JDK 1.5֮ǰµÄ°æ±¾ÖÐÓêParallel Scavenge ÊÕ¼¯Æ÷´îÅäʹÓÃ

¿ÉÒÔ×÷ΪCMSµÄºó±³·½°¸£¬ÔÚCMS·¢ÉúConcurrent Mode FailureÊÇʹÓÃ

¹¤×÷ʾÒâͼ£º

5.Parallel OldÊÕ¼¯Æ÷

Parallel ScavengeµÄÀÏÄê´ú°æ±¾£¬¶àỊ̈߳¬¡°±ê¼ÇÕûÀí¡±Ëã·¨£¬JDK 1.6²Å³öÏÖ¡£ÔÚ´Ë֮ǰParallel ScavengeÖ»ÄÜͬSerial Old´îÅäʹÓã¬ÓÉÓÚSerial OldµÄÐÔÄܽϲÖÂParallel ScavengeµÄÓÅÊÆ·¢»Ó²»³öÀ´£¬ÞÏÁ˸öÞÎ~~

Parallel OldÊÕ¼¯Æ÷µÄ³öÏÖ£¬Ê¹¡°ÍÌÍÂÁ¿ÓÅÏÈ¡±ÊÕ¼¯Æ÷ÖÕÓÚÓÐÁËÃû¸±ÆäʵµÄ×éºÏ¡£ÔÚÍÌÍÂÁ¿ºÍCPUÃô¸ÐµÄ³¡ºÏ£¬¶¼¿ÉÒÔʹÓÃParallel Scavenge/Parallel Old×éºÏ¡£×éºÏµÄ¹¤×÷ʾÒâͼÈçÏ£º

6.CMSÊÕ¼¯Æ÷

CMS(Concurrent Mark Sweep)ÊÕ¼¯Æ÷ÊÇÒ»ÖÖÒÔ»ñÈ¡×î¶Ì»ØÊÕÍ£¶Ùʱ¼äΪĿ±êµÄÊÕ¼¯Æ÷£¬Í£¶Ùʱ¼ä¶Ì£¬Óû§ÌåÑé¾ÍºÃ¡£

»ùÓÚ¡°±ê¼ÇÇå³ý¡±Ëã·¨£¬²¢·¢ÊÕ¼¯¡¢µÍÍ£¶Ù£¬ÔË×÷¹ý³Ì¸´ÔÓ£¬·Ö4²½£º

1)³õʼ±ê¼Ç£º½ö½ö±ê¼ÇGC RootsÄÜÖ±½Ó¹ØÁªµ½µÄ¶ÔÏó£¬Ëٶȿ죬µ«ÊÇÐèÒª¡°Stop The World¡±

2)²¢·¢±ê¼Ç£º¾ÍÊǽøÐÐ×·×ÙÒýÓÃÁ´µÄ¹ý³Ì£¬¿ÉÒÔºÍÓû§Ï̲߳¢·¢Ö´ÐС£

3)ÖØÐ±ê¼Ç£ºÐÞÕý²¢·¢±ê¼Ç½×¶ÎÒòÓû§Ï̼߳ÌÐøÔËÐжøµ¼Ö±ê¼Ç·¢Éú±ä»¯µÄÄDz¿·Ö¶ÔÏóµÄ±ê¼Ç¼Ç¼£¬±È³õʼ±ê¼Çʱ¼ä³¤µ«Ô¶±È²¢·¢±ê¼Çʱ¼ä¶Ì£¬ÐèÒª¡°Stop The World¡±

4)²¢·¢Çå³ý£ºÇå³ý±ê¼ÇΪ¿ÉÒÔ»ØÊÕ¶ÔÏ󣬿ÉÒÔºÍÓû§Ï̲߳¢·¢Ö´ÐÐ

ÓÉÓÚÕû¸ö¹ý³ÌºÄʱ×µÄ²¢·¢±ê¼ÇºÍ²¢·¢Çå³ý¶¼¿ÉÒÔºÍÓû§Ïß³ÌÒ»Æð¹¤×÷£¬ËùÒÔ×ÜÌåÉÏÀ´¿´£¬CMSÊÕ¼¯Æ÷µÄÄÚ´æ»ØÊÕ¹ý³ÌºÍÓû§Ïß³ÌÊDz¢·¢Ö´Ðеġ£

¹¤×÷ʾÒâͼ£º

CSMÊÕ¼¯Æ÷ÓÐ3¸öȱµã£º

1)¶ÔCPU×ÊÔ´·Ç³£Ãô¸Ð

²¢·¢ÊÕ¼¯ËäÈ»²»»áÔÝÍ£Óû§Ị̈߳¬µ«ÒòΪռÓÃÒ»²¿·ÖCPU×ÊÔ´£¬»¹ÊǻᵼÖÂÓ¦ÓóÌÐò±äÂý£¬×ÜÍÌÍÂÁ¿½µµÍ¡£

CMSµÄĬÈÏÊÕ¼¯Ïß³ÌÊýÁ¿ÊÇ=(CPUÊýÁ¿+3)/4£»µ±CPUÊýÁ¿¶àÓÚ4¸ö£¬ÊÕ¼¯Ïß³ÌÕ¼ÓõÄCPU×ÊÔ´¶àÓÚ25%£¬¶ÔÓû§³ÌÐòÓ°Ïì¿ÉÄܽϴ󣻲»×ã4¸öʱ£¬Ó°Ïì¸ü´ó£¬¿ÉÄÜÎÞ·¨½ÓÊÜ¡£

2)ÎÞ·¨´¦Àí¸¡¶¯À¬»ø£¨ÔÚ²¢·¢Çå³ýʱ£¬Óû§Ïß³ÌвúÉúµÄÀ¬»ø½Ð¸¡¶¯À¬»ø£©,¿ÉÄܳöÏÖ"Concurrent Mode Failure"ʧ°Ü¡£

²¢·¢Çå³ýʱÐèÒªÔ¤ÁôÒ»¶¨µÄÄÚ´æ¿Õ¼ä£¬²»ÄÜÏñÆäËûÊÕ¼¯Æ÷ÔÚÀÏÄê´ú¼¸ºõÌîÂúÔÙ½øÐÐÊÕ¼¯£»Èç¹ûCMSÔ¤ÁôÄÚ´æ¿Õ¼äÎÞ·¨Âú×ã³ÌÐòÐèÒª£¬¾Í»á³öÏÖÒ»´Î"Concurrent Mode Failure"ʧ°Ü£»ÕâʱJVMÆôÓúó±¸Ô¤°¸£ºÁÙʱÆôÓÃSerail OldÊÕ¼¯Æ÷£¬¶øµ¼ÖÂÁíÒ»´ÎFull GCµÄ²úÉú£»

3)²úÉú´óÁ¿ÄÚ´æË鯬£ºCMS»ùÓÚ"±ê¼Ç-Çå³ý"Ëã·¨£¬Çå³ýºó²»½øÐÐѹËõ²Ù×÷²úÉú´óÁ¿²»Á¬ÐøµÄÄÚ´æË鯬£¬ÕâÑù»áµ¼Ö·ÖÅä´óÄÚ´æ¶ÔÏóʱ£¬ÎÞ·¨ÕÒµ½×ã¹»µÄÁ¬ÐøÄڴ棬´Ó¶øÐèÒªÌáǰ´¥·¢ÁíÒ»´ÎFull GC¶¯×÷¡£

7.G1ÊÕ¼¯Æ÷

G1£¨Garbage-First£©ÊÇJDK7-u4²ÅÕýÊ½ÍÆ³öÉÌÓõÄÊÕ¼¯Æ÷¡£G1ÊÇÃæÏò·þÎñ¶ËÓ¦ÓõÄÀ¬»øÊÕ¼¯Æ÷¡£ËüµÄʹÃüÊÇδÀ´¿ÉÒÔÌæ»»µôCMSÊÕ¼¯Æ÷¡£

G1ÊÕ¼¯Æ÷ÌØÐÔ£º

²¢ÐÐÓë²¢·¢£ºÄܳä·ÖÀûÓöàCPU¡¢¶àºË»·¾³µÄÓ²¼þÓÅÊÆ£¬Ëõ¶ÌÍ£¶Ùʱ¼ä£»ÄܺÍÓû§Ï̲߳¢·¢Ö´ÐС£

·Ö´úÊÕ¼¯£ºG1¿ÉÒÔ²»ÐèÒªÆäËûGCÊÕ¼¯Æ÷µÄÅäºÏ¾ÍÄܶÀÁ¢¹ÜÀíÕû¸ö¶Ñ£¬²ÉÓò»Í¬µÄ·½Ê½´¦ÀíÐÂÉú¶ÔÏóºÍÒѾ­´æ»îÒ»¶Îʱ¼äµÄ¶ÔÏó¡£

¿Õ¼äÕûºÏ£ºÕûÌåÉÏ¿´²ÉÓñê¼ÇÕûÀíËã·¨£¬¾Ö²¿¿´²ÉÓø´ÖÆËã·¨£¨Á½¸öRegionÖ®¼ä£©£¬²»»áÓÐÄÚ´æË鯬£¬²»»áÒòΪ´ó¶ÔÏóÕÒ²»µ½×ã¹»µÄÁ¬Ðø¿Õ¼ä¶øÌáǰ´¥·¢GC£¬ÕâµãÓÅÓÚCMSÊÕ¼¯Æ÷¡£

¿ÉÔ¤²âµÄÍ£¶Ù£º³ýÁË×·ÇóµÍÍ£¶Ù»¹Äܽ¨Á¢¿ÉÒÔÔ¤²âµÄÍ£¶Ùʱ¼äÄ£ÐÍ£¬ÄÜÈÃʹÓÃÕßÃ÷È·Ö¸¶¨ÔÚÒ»¸ö³¤¶ÈΪMºÁÃëµÄʱ¼äƬ¶ÎÄÚ£¬ÏûºÄÔÚÀ¬»øÊÕ¼¯ÉϵÄʱ¼ä²»³¬NºÁÃ룬ÕâµãÓÅÓÚCMSÊÕ¼¯Æ÷¡£

ΪʲôÄÜ×öµ½¿ÉÔ¤²âµÄÍ£¶Ù£¿

ÊÇÒòΪ¿ÉÒÔÓмƻ®µÄ±ÜÃâÔÚÕû¸öJava¶ÑÖнøÐÐÈ«ÇøÓòµÄÀ¬»øÊÕ¼¯¡£

G1ÊÕ¼¯Æ÷½«ÄÚ´æ·Ö´óСÏàµÈµÄ¶ÀÁ¢ÇøÓò£¨Region£©£¬ÐÂÉú´úºÍÀÏÄê´ú¸ÅÄî±£Áô£¬µ«ÊÇÒѾ­²»ÔÙÎïÀí¸ôÀë¡£

G1¸ú×Ù¸÷¸öRegion»ñµÃÆäÊÕ¼¯¼ÛÖµ´óС£¬ÔÚºǫ́ά»¤Ò»¸öÓÅÏÈÁÐ±í£»

ÿ´Î¸ù¾ÝÔÊÐíµÄÊÕ¼¯Ê±¼ä£¬ÓÅÏÈ»ØÊÕ¼ÛÖµ×î´óµÄRegion£¨Ãû³ÆGarbage-FirstµÄÓÉÀ´£©£»

Õâ¾Í±£Ö¤ÁËÔÚÓÐÏÞµÄʱ¼äÄÚ¿ÉÒÔ»ñÈ¡¾¡¿ÉÄܸߵÄÊÕ¼¯Ð§ÂÊ¡£

¶ÔÏ󱻯äËûRegionµÄ¶ÔÏóÒýÓÃÁËÔõô°ì£¿

Åж϶ÔÏó´æ»îʱ£¬ÊÇ·ñÐèҪɨÃèÕû¸öJava¶Ñ²ÅÄܱ£Ö¤×¼È·£¿ÔÚÆäËûµÄ·Ö´úÊÕ¼¯Æ÷£¬Ò²´æÔÚÕâÑùµÄÎÊÌ⣨¶øG1¸üÍ»³ö£©£ºÐÂÉú´ú»ØÊÕµÄʱºò²»µÃ²»É¨ÃèÀÏÄê´ú£¿
ÎÞÂÛG1»¹ÊÇÆäËû·Ö´úÊÕ¼¯Æ÷£¬JVM¶¼ÊÇʹÓÃRemembered SetÀ´±ÜÃâÈ«¾ÖɨÃ裺
ÿ¸öRegion¶¼ÓÐÒ»¸ö¶ÔÓ¦µÄRemembered Set£»
ÿ´ÎReferenceÀàÐÍÊý¾Ýд²Ù×÷ʱ£¬¶¼»á²úÉúÒ»¸öWrite Barrier ÔÝʱÖжϲÙ×÷£»
È»ºó¼ì²é½«ÒªÐ´ÈëµÄÒýÓÃÖ¸ÏòµÄ¶ÔÏóÊÇ·ñºÍ¸ÃReferenceÀàÐÍÊý¾ÝÔÚ²»Í¬µÄ Region£¨ÆäËûÊÕ¼¯Æ÷£º¼ì²éÀÏÄê´ú¶ÔÏóÊÇ·ñÒýÓÃÁËÐÂÉú´ú¶ÔÏ󣩣»
Èç¹û²»Í¬£¬Í¨¹ýCardTable°ÑÏà¹ØÒýÓÃÐÅÏ¢¼Ç¼µ½ÒýÓÃÖ¸Ïò¶ÔÏóµÄËùÔÚRegion¶ÔÓ¦µÄRemembered SetÖУ»
½øÐÐÀ¬»øÊÕ¼¯Ê±£¬ÔÚGC¸ù½ÚµãµÄö¾Ù·¶Î§¼ÓÈë Remembered Set £¬¾Í¿ÉÒÔ±£Ö¤²»½øÐÐÈ«¾ÖɨÃ裬Ҳ²»»áÓÐÒÅ©¡£

²»¼ÆËãά»¤Remembered SetµÄ²Ù×÷£¬»ØÊÕ¹ý³Ì¿ÉÒÔ·ÖΪ4¸ö²½Ö裨ÓëCMS½ÏΪÏàËÆ£©£º

1)³õʼ±ê¼Ç£º½ö½ö±ê¼ÇGC RootsÄÜÖ±½Ó¹ØÁªµ½µÄ¶ÔÏ󣬲¢ÐÞ¸ÄTAMS(Next Top at Mark Start)µÄÖµ£¬ÈÃÏÂÒ»½×¶ÎÓû§³ÌÐò²¢·¢ÔËÐÐʱÄÜÔÚÕýÈ·¿ÉÓõÄRegionÖд´½¨Ð¶ÔÏó£¬ÐèÒª¡°Stop The World¡±

2)²¢·¢±ê¼Ç£º´ÓGC Roots¿ªÊ¼½øÐпɴïÐÔ·ÖÎö£¬ÕÒ³ö´æ»î¶ÔÏ󣬺Äʱ³¤£¬¿ÉÓëÓû§Ï̲߳¢·¢Ö´ÐÐ

3)×îÖÕ±ê¼Ç£ºÐÞÕý²¢·¢±ê¼Ç½×¶ÎÒòÓû§Ï̼߳ÌÐøÔËÐжøµ¼Ö±ê¼Ç·¢Éú±ä»¯µÄÄDz¿·Ö¶ÔÏóµÄ±ê¼Ç¼Ç¼¡£²¢·¢±ê¼ÇʱÐéÄâ»ú½«¶ÔÏó±ä»¯¼Ç¼ÔÚÏß³ÌRemember Set LogsÀïÃæ£¬×îÖÕ±ê¼Ç½×¶Î½«Remember Set LogsÕûºÏµ½Remember SetÖУ¬±È³õʼ±ê¼Çʱ¼ä³¤µ«Ô¶±È²¢·¢±ê¼Çʱ¼ä¶Ì£¬ÐèÒª¡°Stop The World¡±

4)ɸѡ»ØÊÕ£ºÊ×ÏȶԸ÷¸öRegionµÄ»ØÊÕ¼ÛÖµºÍ³É±¾½øÐÐÅÅÐò£¬È»ºó¸ù¾ÝÓû§ÆÚÍûµÄGCÍ£¶Ùʱ¼äÀ´¶¨ÖÆ»ØÊռƻ®£¬×îºó°´¼Æ»®»ØÊÕһЩ¼ÛÖµ¸ßµÄRegionÖÐÀ¬»ø¶ÔÏó¡£»ØÊÕʱ²ÉÓø´ÖÆËã·¨£¬´ÓÒ»¸ö»ò¶à¸öRegion¸´ÖÆ´æ»î¶ÔÏóµ½¶ÑÉϵÄÁíÒ»¸ö¿ÕµÄRegion£¬²¢ÇÒÔڴ˹ý³ÌÖÐѹËõºÍÊÍ·ÅÄڴ棻¿ÉÒÔ²¢·¢½øÐУ¬½µµÍÍ£¶Ùʱ¼ä£¬²¢Ôö¼ÓÍÌÍÂÁ¿¡£

¹¤×÷ʾÒâͼ£º

Îå¡¢½áÊøÓï

µ½´Ë£¬±¾ÆªËæ±ÊÖÕÓÚдÍêÁË¡£

   
1555 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö