ÆüËܸì¤Î»ñÎÁ¤¬¤¹¤¯¤Ê¤¤GC¥¢¥ë¥´¥ê¥º¥à¤Ë¤Ä¤¤¤Æ¾ÜºÙ¤Ë²òÀ⤷¤Þ¤¹

À¤ÂåÊÌGC

¼ã¤¤¤ä¤Ä¤é¤òÍ¥À褹¤ëGC

¥¢¥ë¥´¥ê¥º¥à

¥ª¥Ö¥¸¥§¥¯¥È¤Î¼÷Ì¿¤Ë¤Ä¤¤¤Æ¡¢Â¿¤¯¤Î¥×¥í¥°¥é¥à¤Ç´Ñ¬¤µ¤ì¤ë¤¢¤ë·¹¸þ¤¬ÃΤé¤ì¤Æ¤¤¤ë¡£
¤½¤ì¤Ï¡Ö¸Å¤¯¤«¤éÀ¸¤­»Ä¤Ã¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤½¤Î¤Þ¤ÞÀ¸¤­»Ä¤ê¤ä¤¹¤¯¡¢¿·¤·¤¯³ÎÊݤµ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Û¤É¤¹¤°¤Ë¥´¥ß¤Ë¤Ê¤ê¤ä¤¹¤¤¡×(*)
¤È¤¤¤¦·¹¸þ¤Ç¤¢¤ë¡£

GC ¤Î¼Â¹Ô¸úΨ¤ÏÀ¸¤­»Ä¤ë¥ª¥Ö¥¸¥§¥¯¥È¤¬¾¯¤Ê¤¤¤Û¤É¤è¤¤¤Î¤À¤«¤é¡¢
¸Å¤¤¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤Û¤¦¤Ã¤Æ¤ª¤¤¤Æ(̵¾ò·ï¤ËÀ¸¤­»Ä¤ë¤È¤ß¤Ê¤·¤Æ) ¿·¤·¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ò½ÅÅÀŪ¤Ëõº÷¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÍø±×¤¬ÆÀ¤é¤ì¤½¤¦¤Ç¤¢¤ë¡£
Generational GC (À¤Âå·¿GC) ¤Ï¡¢¿·¤·¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¤¿¤á¤Î¥Ò¡¼¥×¤È¡¢¸Å¤á¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Î¤¿¤á¤Î¥Ò¡¼¥×¤òÍѤ¤¤ë(¾å¿Þ)¡£

Copying GC ¤ò´ð¤Ë¤¹¤ë¤Î¤Ç¤¢¤ì¤Ð¡¢¿Þ¤Ë¤Ï¼¨¤µ¤ì¤Æ¤¤¤Ê¤¤¤¬¡¢¿·À¤Âå¤Î¥Ò¡¼¥×¤ÈµìÀ¤Âå¤Î¥Ò¡¼¥×¤Î¤½¤ì¤¾¤ì¤¬from/to ¤Ë2 Åùʬ¤µ¤ì¤ë¡£
¥ª¥Ö¥¸¥§¥¯¥È¤Ï¤Þ¤º¿·À¤Âå¥Ò¡¼¥×¤Ë³ÎÊݤµ¤ì¤ë¡£¿·À¤Âå¥Ò¡¼¥×¤¬°ìÇդˤʤ俤顢¥Ò¡¼¥×Á´ÂΤÎGC¤ò¹Ô¤Ê¤¦Âå¤ï¤ê¤Ë¡¢¿·À¤Âå¥Ò¡¼¥×¤À¤±¤òÂоݤȤ·¤¿GC(minor collection) ¤ò¹Ô¤Ê¤¦¡£
Minor collection ¤ò·«¤êÊÖ¤·¤¿·ë²Ì¡¢¤¢¤ëÄøÅٰʾåĹ¼÷Ì¿¤Ê¥ª¥Ö¥¸¥§¥¯¥È¤¬¸«¤Ä¤«¤Ã¤¿¤Ê¤é
(Î㤨¤ÐGC ¤¬n ²óµ¯¤³¤ë´ÖÀ¸¤­»Ä¤Ã¤¿¤é)¡¢¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÏµìÀ¤Âå¥Ò¡¼¥×¤Ë°Ü¤µ¤ì¤ë(ÅÂƲÆþ¤ê¡¢¤Þ¤¿¤Ïpromote ¤È¸Æ¤Ö)¡£
¤µ¤Æ¡¢minor collection ¤Ë¤ª¤¤¤Æ¤ÏµìÀ¤Âå¥Ò¡¼¥×Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò¥¹¥­¥ã¥ó¤¹¤ëɬÍפ¬¤Ê¤¤(µìÀ¤Â奪¥Ö¥¸¥§¥¯¥È¤Ï̵¾ò·ï¤Ë¡ÖÀ¸¤­¡×¤È¤ß¤Ê¤µ¤ì¤ë)¡£
¿Þ¤Ç¤Ï¥ª¥Ö¥¸¥§¥¯¥Èb °Ê¹ß¤Îõº÷¤Ï¹Ô¤Ê¤ï¤Ê¤¤¡£¤³¤Î¤¿¤á¡¢minor collection ¤Ï¥Ò¡¼¥×Á´ÂΤòõº÷¤¹¤ë¤è¤ê¤â®¤¯½ªÎ»¤¹¤ë¡£

Æþ¤ìÂؤï¤ê¤Î·ã¤·¤¤¿·À¤Âå¥Ò¡¼¥×¤ÈÂоÈŪ¤Ë¡¢µìÀ¤Âå¥Ò¡¼¥×¤ÏÅÂƲÆþ¤ê¥ª¥Ö¥¸¥§¥¯¥È¤Ë¤è¤Ã¤Æ¤æ¤Ã¤¯¤ê¤ÈËþ¤¿¤µ¤ì¤Æ¤¤¤¯¡£
¤ä¤¬¤ÆµìÀ¤Âå¥Ò¡¼¥×¤µ¤¨°ìÇդˤʤ俤顢¤½¤³¤Ç¤Ï¤¸¤á¤Æ¡¢¥Ò¡¼¥×Á´ÂΤòõº÷¤¹¤ëGC(major collection) ¤ò»î¤ß¤ë¡£

Generational GC ¤ò¼ÂÁõ¤¹¤ëºÝ¤Ë¤Ï¡¢°Ê²¼¤Î¤è¤¦¤ÊÍ·ê¤Ëµ¤¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ë¡£
Minor collection¤ò¹Ô¤Ê¤¦ºÝ¤Ë¡¢µì¢ª¿·¤Î¥Ý¥¤¥ó¥¿¤ËÃí°Õ¤¬É¬ÍפǤ¢¤ë¡£
¤¿¤È¤¨¤Ðc ¢ª d ¤Î¥Ý¥¤¥ó¥¿¤Ëµ¤ÉÕ¤«¤Ê¤¤¤È¡¢Åþã²Äǽ¤Ê¥ª¥Ö¥¸¥§¥¯¥Èd ¤ò´Ö°ã¤Ã¤Æ²òÊü¤·¤Æ¤·¤Þ¤¦¡£
¾å¿Þ¤Î¾ì¹ç¡¢GC ¤Ï¿·À¤Âå¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò»ý¤Ã¤Æ¤¤¤ëc¤Èe ¤òÁ´¤Æ³Ð¤¨¤Æ¤ª¤­¡¢
minor collection ¤Ï¤½¤ì¤é¤â¥ë¡¼¥È¤È¸«¤Ê¤¹¡£¤³¤ÎÌÜŪ¤Î¤¿¤á¤Ë(incremental GC¤ÎÀá¤ÇÀâÌÀ¤·¤¿¤è¤¦¤Ê)
write barrier ¤òÍѤ¤¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÉáÃʤ«¤éµì¢ª¿·¤Î¥Ý¥¤¥ó¥¿¤¬¤Ç¤­¤¿¤«¤É¤¦¤«¤òÁ´¤Æ³Ð¤¨¤Æ¤ª¤«¤Í¤Ð¤Ê¤é¤Ê¤¤¡£

Generational GC ¤Ë¤ª¤±¤ëwrite barrier¤Ë¤Ï¡¢remembered list¡¢remembered set¡¢card marking¡¢page marking¤¬¤¢¤ë¡£
  • remembered list
µì¢ª¿·¤Î»²¾È¤¬È¯À¸¤·¤¿¾ì¹ç¤Ë¡¢»²¾ÈÀè¤ÎÀ¤Âå¤Îremembered list ¤¬»²¾È¸µ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ò(ÇÛÎó¤Ê¤É¤Î·Á¤Ç)µ­²±¤·¤Æ¤ª¤¯¡£GC¤ÎºÝ¤Ë¤Ï¤³¤Îremembered list ¤ò¥ë¡¼¥È¤È¤·¤Æ¥¹¥­¥ã¥ó¤¹¤ë¤³¤È¤Çµì¢ª¿·¤Î¥Ý¥¤¥ó¥¿¤òȯ¸«¤Ç¤­¤ë¡£
  • remembered set
remembered list ¤È»÷¤Æ¤¤¤ë¤¬¡¢¥ª¥Ö¥¸¥§¥¯¥È¤¬ÅÐÏ¿¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò¥ª¥Ö¥¸¥§¥¯¥È¼«¿È¤¬µ­²±¤·¤Æ¤¤¤ëÅÀ¤¬°Û¤Ê¤ë¡£¤³¤Î¤¿¤á¡¢¥ª¥Ö¥¸¥§¥¯¥ÈÆâÉô¤Ë1¥Ó¥Ã¥È;·×¤Ë¼è¤ëɬÍפ¬¤¢¤ë¡£¤³¤ì¤Ë¤è¤ê¡¢Æ±¤¸¥ª¥Ö¥¸¥§¥¯¥È¤¬2²ó°Ê¾åÅÐÏ¿¤µ¤ì¤ë¤Î¤òËɤ°¤³¤È¤¬¤Ç¤­¤ë¡£
  • card marking
¥Ò¡¼¥×¤ò2¤Îk¾è¥µ¥¤¥º¤Ëʬ³ä¤·¡¢¤½¤ì¤¾¤ì¤ò¥«¡¼¥É¤È¤¹¤ë¡£³Æ¥ª¥Ö¥¸¥§¥¯¥È¤Ï1¤Ä°Ê¾å¤Î¥«¡¼¥É¤Ë°¤·¤Æ¤¤¤ë(Ê£¿ô¤Î¥«¡¼¥É¤Ë¤Þ¤¿¤¬¤Ã¤Æ¤â¤è¤¤)¡£¥«¡¼¥ÉÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬½ñ¤­´¹¤¨¤é¤ì¤¿¤«¤É¤¦¤«¤òµ­Ï¿¤¹¤ëÇÛÎó¤òÍÑ°Õ¤¹¤ë¡£Í×ÁÇ¿ô¤Ïk¤Ç¤¢¤ë¡£µì¢ª¿·¤Î»²¾È¤¬È¯À¸¤·¤¿¤È¤­¡¢»²¾È¸µ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤¬Â°¤¹¤ë¥«¡¼¥É¤¬¥Þ¡¼¥¯¤µ¤ì¤ë¡£GC¼Â¹Ô»þ¤Ë¤Ï¤³¤ÎÇÛÎó¤ò¥¹¥­¥ã¥ó¤¹¤ì¤Ð¤è¤¤¡£
  • page marking
card marking ¤Î¥«¡¼¥É¤Î¥µ¥¤¥º¤ò¥Ú¡¼¥¸¤ÈƱ¥µ¥¤¥º¤Ë¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£¥Ú¡¼¥¸¤Î¥µ¥¤¥º¤ÏOS¤Ë¤è¤ê°Û¤Ê¤ë¤¬¡¢Ä̾ï¤Ï4KB¤Ç¤¢¤ë¡£

ÍøÅÀ

  1. Minor collection ¤Î¼Â¹Ô»þ´Ö¤Ï¥Ò¡¼¥×Á´ÂΤÎGC ¤ËÈæ¤Ùû¤¤¤Î¤Ç¡¢¥×¥í¥°¥é¥à¤ÎÄä»ß»þ´Ö¤ò²þÁ±¤Ç¤­¤ë¡£
  2. ¾å½Ò¤Î(*) ¤È¤¤¤¦·¹¸þ¤¬À®¤êΩ¤Ä¤è¤¦¤Ê¥×¥í¥°¥é¥à¤Ë¤ª¤¤¤Æ¡¢¥È¡¼¥¿¥ë¼Â¹Ô»þ´Ö¤ò²þÁ±¤Ç¤­¤ë¡£

·çÅÀ

  1. major collection ¤¬µ¯¤³¤Ã¤Æ¤·¤Þ¤¨¤ÐŤ¯Ää»ß¤·¤Æ¤·¤Þ¤¦¡£
  2. ¾å½Ò(*) ¤ÎµÕ¤Î·¹¸þ¤Ë¤¢¤ë(¸Å¤¤¥ª¥Ö¥¸¥§¥¯¥È¤ÎÊý¤¬Àè¤Ë»à¤Ë¤ä¤¹¤¤) ¥×¥í¥°¥é¥à¤Ç¤ÏµÕ¸ú²Ì¤È¤Ê¤ê¤¦¤ë¡£

¼Â¥³¡¼¥É¤ò¸«¤¿¤¤¾ì¹ç

  • JVM½èÍý·Ï(Ê£»¨¤Ê¥¢¥ë¥´¥ê¥º¥à¤Î°Ù¡¢¾ÜºÙ¤Ï¸å½Ò¤¹¤ë)
  • Smalltalk½èÍý·Ï¤Î²¿¤«

¤ª¤Þ¤±

remembered set¤Î¹¹¿·
remebered set¤Ï write barrier ¤Ë¤è¤êÁý¤¨¤Æ¤¤¤­¡¤major collection ¤ÎºÝ¤Ë°ì¿·¤µ¤ì¤ë¡¥
¶ñÂÎŪ¤Ê¼ê½ç¤ò°Ê²¼¤Ë½Ò¤Ù¤ë¡¥

  1. major collection ¤ÎÁ°¤Ë remebered set ¤òÇË´þ¤¹¤ë¡¥
  2. mark ¤òÉÕ¤±¤ëºÝ¤Ë¥ª¥Ö¥¸¥§¥¯¥È¤Î remebered set ¥Õ¥é¥°¤ò³Îǧ¤¹¤ë¡¥
  3. remenbered set ¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¢¤ì¤Ð¡¤remebered set¤ËÄɲ乤롥

¤³¤ì¤Ë¤è¤ê¡¤À¸¤­¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤Î¤ß¤Î¿·¤·¤¤ remebered set ¤¬¹½ÃÛ¤µ¤ì¤ë¡¥

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

WikiÆ⸡º÷

WikiÆ⸡º÷

¥Õ¥ê¡¼¥¨¥ê¥¢

ÊÔ½¸¤Ë¤ÏID¤¬É¬ÍפǤ¹