Note
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãµã€ã³ã€ã³ãŸãã¯ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®ããŒãžã«ã¢ã¯ã»ã¹ããã«ã¯ãæ¿èªãå¿ èŠã§ãã ãã£ã¬ã¯ããªã®å€æŽã詊ãããšãã§ããŸãã
ãã®èšäºã§ã¯ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãšã¡ã¢ãªäœ¿çšéã«é¢é£ããåé¡ã«ã€ããŠèª¬æããŸãã ãããŒãžã ããŒãã«é¢é£ããåé¡ã«å¯ŸåŠããã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®åœ±é¿ãæå°éã«æããæ¹æ³ã«ã€ããŠèª¬æããŸãã ååé¡ã«ã¯ãåé¡ã®èª¿æ»ã«äœ¿çšã§ããæé ãžã®ãªã³ã¯ããããŸãã
ããã©ãŒãã³ã¹åæããŒã«
次ã®ã»ã¯ã·ã§ã³ã§ã¯ãã¡ã¢ãªäœ¿çšéãšã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®åé¡ã調æ»ããããã«äœ¿çšã§ããããŒã«ã«ã€ããŠèª¬æããŸãã ãã®èšäºã§åŸè¿° ããæé ã¯ããããã®ããŒã«ãåç §ããŸãã
ã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒ
ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã䜿çšããŠãããã©ãŒãã³ã¹ ããŒã¿ãåéã§ããŸãã æé ã«ã€ããŠã¯ãã ã©ã³ã¿ã€ã ãããã¡ã€ã«ããåç §ããŠãã ããã ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã® .NET CLR ã¡ã¢ãª ã«ããŽãªã¯ãã .NET ã®ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒãã§èª¬æãããŠããããã«ãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã«é¢ããæ å ±ãæäŸããŸãã
SOS ã䜿çšãããããã°
Windows ãããã¬ãŒ (WinDbg) ã䜿çšããŠããããŒãžã ããŒãäžã®ãªããžã§ã¯ããæ€æ»ã§ããŸãã
WinDbg ãã€ã³ã¹ããŒã«ããã«ã¯ã[Windows çšãããã° ããŒã«ã®ããŠã³ããŒã] ããŒãžãã Windows çšãããã° ããŒã«ãã€ã³ã¹ããŒã« ããŸãã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ETW ã€ãã³ã
Windows ã®ã€ãã³ã ãã¬ãŒã¹ (ETW) ã¯ã.NET ã«ãã£ãŠæäŸããããããã¡ã€ãªã³ã°ãšãããã°ã®ãµããŒããè£å®ãããã¬ãŒã¹ ã·ã¹ãã ã§ãã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ETW ã€ãã³ã ã¯ãçµ±èšç芳ç¹ãããããŒãžã ããŒããåæããã®ã«åœ¹ç«ã€æ
å ±ããã£ããã£ããŸãã ããšãã°ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããããšãããšãã«çºçãã GCStart_V1 ã€ãã³ãã¯ãæ¬¡ã®æ
å ±ãæäŸããŸãã
- åéããããªããžã§ã¯ãã®ãžã§ãã¬ãŒã·ã§ã³
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããçç±
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çš®é¡ (åæå®è¡ãŸãã¯éåæå®è¡)
ETW ã€ãã³ã ãã°ã¯å¹ççã§ãããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«é¢é£ããããã©ãŒãã³ã¹ã®åé¡ããã¹ã¯ãããããšã¯ãããŸããã ããã»ã¹ã¯ãETW ã€ãã³ããšçµã¿åãããŠç¬èªã®ã€ãã³ããæäŸã§ããŸãã ãã°ã«èšé²ãããããã¢ããªã±ãŒã·ã§ã³ã®ã€ãã³ããšã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®ã€ãã³ããé¢é£ä»ããŠåæããããŒãã®åé¡ãã©ã®ããã«çºçãããããŸããã®ã¿ã€ãã³ã°ãææ¡ã§ããŸãã ããšãã°ããµãŒã㌠ã¢ããªã±ãŒã·ã§ã³ã¯ãã¯ã©ã€ã¢ã³ãèŠæ±ã®éå§æãšçµäºæã«ã€ãã³ããæäŸã§ããŸãã
ãããã¡ã€ãªã³ã° API
å ±éèšèªã©ã³ã¿ã€ã (CLR) ãããã¡ã€ãªã³ã° ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã«åœ±é¿ãåãããªããžã§ã¯ãã«é¢ãã詳现æ å ±ãæäŸããŸãã ãããã¡ã€ã©ãŒã¯ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®éå§æãšçµäºæã«éç¥ãåãåãããšãã§ããŸãã åäžä»£ã®ãªããžã§ã¯ãã®èå¥ãªã©ããããŒãžã ããŒãäžã®ãªããžã§ã¯ãã«é¢ããã¬ããŒããæäŸã§ããŸãã 詳现ã«ã€ããŠã¯ãã ãããã¡ã€ãªã³ã°ã®æŠèŠããåç §ããŠãã ããã
ãããã¡ã€ã©ãŒã¯ãå æ¬çãªæ å ±ãæäŸã§ããŸãã ãã ããè€éãªãããã¡ã€ã©ãŒã¯ãã¢ããªã±ãŒã·ã§ã³ã®åäœã倿Žããå¯èœæ§ããããŸãã
ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³ ãªãœãŒã¹ã®ç£èŠ
ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³ ãªãœãŒã¹ç£èŠ (ARM) ã䜿çšãããšããã¹ãã¯ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³å¥ã« CPU ãšã¡ã¢ãªã®äœ¿çšç¶æ³ãç£èŠã§ããŸãã 詳现ã«ã€ããŠã¯ãã ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã³ ãªãœãŒã¹ã®ç£èŠããåç §ããŠãã ããã
ããã©ãŒãã³ã¹ã«é¢ããåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°
æåã®æé ã§ã¯ã åé¡ãå®éã«ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ãããã©ããã倿ããŸãã ãããæ£ãããšå€æããå Žåã¯ã次ã®äžèЧããéžæããŠåé¡ã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ãè¡ããŸãã
- ã¡ã¢ãªäžè¶³ã®äŸå€ãã¹ããŒããã
- ããã»ã¹ã§äœ¿çšãããã¡ã¢ãªãå€ããã
- ã¬ããŒãžã³ã¬ã¯ã¿ãŒããªããžã§ã¯ããååã«éãååã§ããªã
- ãããŒãžã ããŒããæçåããããŠãã
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®äžæåæ¢ãé·ããã
- ãžã§ãã¬ãŒã·ã§ã³ 0 ã倧ããããŸã
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã® CPU 䜿çšçãé«ãããŸã
åé¡: ã¡ã¢ãªäžè¶³äŸå€ãšã©ãŒãçºçãã
OutOfMemoryException ãããŒãžãäŸå€ãã¹ããŒãããæ£åœãªç¶æ³ãšããŠã¯ã次㮠2 ã€ããããŸãã
ä»®æ³ã¡ã¢ãªãäžè¶³ããŠããŸãã
ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ãäºåã«æ±ºå®ããããµã€ãºã®ã»ã°ã¡ã³ãã§ã·ã¹ãã ããã¡ã¢ãªãå²ãåœãŠãŸãã å²ãåœãŠã«è¿œå ã®ã»ã°ã¡ã³ããå¿ èŠã§ãã£ãŠããããã»ã¹ã®ä»®æ³ã¡ã¢ãªé åã«é£ç¶ãã空ããããã¯ãæ®ã£ãŠããªãå ŽåããããŒãžã ããŒãã®å²ãåœãŠã¯å€±æããŸãã
å²ãåœãŠãã®ã«ååãªç©çã¡ã¢ãªããããŸããã
äŸå€ãæ£åœã§ãªããšå€æããå Žåã¯ãæ¬¡ã®æ å ±ã Microsoft ã«ã¹ã¿ã㌠ãµãŒãã¹ããã³ãµããŒãã«ãåãåãããã ããã
- ã¡ã¢ãªäžè¶³ã®ãããŒãžãäŸå€ãå«ãã¹ã¿ãã¯ã
- å®å šãªã¡ã¢ãª ãã³ã
- ä»®æ³ãŸãã¯ç©çã¡ã¢ãªãåé¡ã§ã¯ãªãããšã瀺ãããŒã¿ãå«ãããããã¡ã¢ãªäžè¶³ã®æ£åœãªäŸå€ã§ã¯ãªãããšã蚌æããããŒã¿ã
åé¡: ããã»ã¹ãã¡ã¢ãªã䜿ããããŠãã
äžè¬çãªåæã¯ãWindows ã¿ã¹ã¯ ãããŒãžã£ãŒã® [ ããã©ãŒãã³ã¹ ] ã¿ãã«ã¡ã¢ãªäœ¿çšéã衚瀺ããã䜿çšãããŠããã¡ã¢ãªã®éãå€ãããããšã瀺ãå¯èœæ§ããããšããããšã§ãã ãã ãããã®è¡šç€ºã¯ã¯ãŒãã³ã° ã»ããã«é¢é£ããŸããä»®æ³ã¡ã¢ãªäœ¿çšéã«é¢ããæ å ±ã¯æäŸãããŸããã
åé¡ããããŒãžã ããŒãã«ãã£ãŠçºçããŠãããšå€æããå Žåã¯ãæéã®çµéãšåæã«ãããŒãžã ããŒããæž¬å®ããŠããã¿ãŒã³ãç¹å®ããå¿ èŠããããŸãã
åé¡ããããŒãžã ããŒãã«ãã£ãŠåŒãèµ·ããããŠããªããšå€æããå Žåã¯ããã€ãã£ã ãããã°ã䜿çšããå¿ èŠããããŸãã
åé¡: ã¬ããŒãžã³ã¬ã¯ã¿ãŒããªããžã§ã¯ããååã«è¿ éã«ååã§ããªã
ãªããžã§ã¯ããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«å¯ŸããŠæåŸ ã©ããã«åå©çšãããŠããªããã®ããã«èŠããå Žåã¯ããããã®ãªããžã§ã¯ããžã®åŒ·åãªåç §ããããã©ããã倿ããå¿ èŠããããŸãã
ãŸããé ä¿¡äžèœãªããžã§ã¯ããå«ããžã§ãã¬ãŒã·ã§ã³ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãååšããªãå Žåã«ãããã®åé¡ãçºçããå¯èœæ§ããããŸããããã¯ãé ä¿¡äžèœãªããžã§ã¯ãã®ãã¡ã€ãã©ã€ã¶ãŒãå®è¡ãããŠããªãããšã瀺ããŸãã ããšãã°ãã·ã³ã°ã« ã¹ã¬ãã ã¢ããŒãã¡ã³ã (STA) ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠããŠããã¡ã€ãã©ã€ã¶ãŒ ãã¥ãŒã«ãµãŒãã¹ãæäŸããã¹ã¬ãããåŒã³åºããªãå Žåã«ããããå¯èœã§ãã
åé¡: ãããŒãžã ããŒããæçåããããŠãã
æçåã¬ãã«ã¯ãäžä»£ã«å²ãåœãŠãããã¡ã¢ãªã®åèšã«å¯Ÿãã空ãé åã®æ¯çãšããŠèšç®ãããŸãã 第 2 äžä»£ã®å Žåã蚱容ã§ããæçåã¬ãã«ã¯ 20%以äžã§ãã ãžã§ãã¬ãŒã·ã§ã³ 2 ã¯éåžžã«å€§ãããªããããæçåã®æ¯çã¯çµ¶å¯Ÿå€ãããéèŠã§ãã
æ°ãããªããžã§ã¯ããå²ãåœãŠãããäžä»£ã§ããããããžã§ãã¬ãŒã·ã§ã³ 0 ã«å€ãã®ç©ºãé åãæã€ããšã¯åé¡ã§ã¯ãããŸããã
æçåã¯ãå§çž®ãããŠããªããããåžžã«ã©ãŒãž ãªããžã§ã¯ã ããŒãã§çºçããŸãã 飿¥ãã空ãé åã¯ã倧ããªãªããžã§ã¯ãã®å²ãåœãŠèŠæ±ãæºããããã«ãåäžã®é åã«èªç¶ã«çµ±åãããŸãã
第 1 äžä»£ãšç¬¬ 2 äžä»£ã§ã¯æçåãåé¡ã«ãªãå¯èœæ§ããããŸãã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®åŸã«ãããã®äžä»£ã«å€§éã®ç©ºãé åãããå Žåã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãªããžã§ã¯ãã®äœ¿çšã«å€æŽãå¿ èŠãªå Žåããããé·æçãªãªããžã§ã¯ãã®æå¹æéã®åè©äŸ¡ãæ€èšããå¿ èŠããããŸãã
ãªããžã§ã¯ããé床ã«ãã³çããããšãæçåãå¢å ããå¯èœæ§ããããŸãã æçåãé«ãå Žåã¯ããã³çãããããªããžã§ã¯ããå€ãããå¯èœæ§ããããŸãã
ä»®æ³ã¡ã¢ãªã®æçåã«ãã£ãŠã¬ããŒãž ã³ã¬ã¯ã¿ãŒãã»ã°ã¡ã³ãã远å ã§ããªãå Žåãåå ã¯æ¬¡ã®ããããã§ããå¯èœæ§ããããŸãã
倿°ã®å°ããªã¢ã»ã³ããªã®é »ç¹ãªèªã¿èŸŒã¿ãšã¢ã³ããŒãã
ã¢ã³ãããŒãž ã³ãŒããšã®çžäºéçšæã« COM ãªããžã§ã¯ããžã®åç §ãå€ãããŸãã
å€§èŠæš¡ãªäžæçãªããžã§ã¯ããäœæãããšã倧ããªãªããžã§ã¯ã ããŒããé »ç¹ã«ããŒã ã»ã°ã¡ã³ããå²ãåœãŠããè§£æŸãããããŸãã
CLR ããã¹ãããå Žåãã¢ããªã±ãŒã·ã§ã³ã¯ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã«ãã®ã»ã°ã¡ã³ããä¿æããããšãèŠæ±ã§ããŸãã ããã«ãããã»ã°ã¡ã³ãå²ãåœãŠã®é »åºŠãæžå°ããŸãã ãããè¡ãã«ã¯ãSTARTUP_FLAGS åæã§ STARTUP_HOARD_GC_VM ãã©ã°ã䜿çšããŸãã
| ããã©ãŒãã³ã¹ ãã§ã㯠|
|---|
|
ãããŒãžã ããŒãå
ã®ç©ºãé åã®éãæ±ºå®ããŸãã ãã³çãããããªããžã§ã¯ãã®æ°ã決å®ããŸãã |
æçåã®æ£åœãªåå ããªããšæãããå Žåã¯ãMicrosoft ã«ã¹ã¿ã㌠ãµãŒãã¹ãšãµããŒãã«ãåãåãããã ããã
åé¡: ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®äžæåæ¢ãé·ããã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯ãœãã ãªã¢ã«ã¿ã€ã ã§åäœãããããã¢ããªã±ãŒã·ã§ã³ã¯äžæåæ¢ã蚱容ã§ããå¿ èŠããããŸãã ãœãã ãªã¢ã«ã¿ã€ã ã®åºæºã§ã¯ã95% ã®æäœãæéã©ããã«å®äºããå¿ èŠããããŸãã
åæå®è¡ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯ããããŒãžã ã¹ã¬ããã¯ã³ã¬ã¯ã·ã§ã³äžã«å®è¡ã§ããŸããã€ãŸããäžæåæ¢ã¯éåžžã«æå°éã§ãã
ãšãã§ã¡ã©ã« ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ (ãžã§ãã¬ãŒã·ã§ã³ 0 ãšãžã§ãã¬ãŒã·ã§ã³ 1) ã¯æ°ããªç§ããæç¶ããªããããéåžžãäžæåæ¢ãæžããããšã¯äžå¯èœã§ãã ãã ããã¢ããªã±ãŒã·ã§ã³ã«ããå²ãåœãŠèŠæ±ã®ãã¿ãŒã³ã倿Žããããšã§ã第 2 äžä»£ã³ã¬ã¯ã·ã§ã³ã®äžæåæ¢ãæžããããšãã§ããŸãã
ãã 1 ã€ã®ããæ£ç¢ºãªæ¹æ³ã¯ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ETW ã€ãã³ãã䜿çšããããšã§ãã äžé£ã®ã€ãã³ãã«ã¿ã€ã ã¹ã¿ã³ãã®éãã远å ããããšã§ãã³ã¬ã¯ã·ã§ã³ã®ã¿ã€ãã³ã°ã確èªã§ããŸãã ã³ã¬ã¯ã·ã§ã³ã·ãŒã±ã³ã¹å šäœã«ã¯ãå®è¡ãšã³ãžã³ã®äžæãã¬ããŒãžã³ã¬ã¯ã·ã§ã³èªäœããããŠå®è¡ãšã³ãžã³ã®åéãå«ãŸããŸãã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³éç¥ã䜿çšããŠããµãŒããŒããžã§ãã¬ãŒã·ã§ã³ 2 ã®ã³ã¬ã¯ã·ã§ã³ã䜿çšããããšããŠãããã©ãããããã³å¥ã®ãµãŒããŒã«èŠæ±ãåã«ãŒãã£ã³ã°ãããšãäžæåæ¢ã«é¢ããåé¡ãç·©åãããå¯èœæ§ããããã©ããã倿ã§ããŸãã
| ããã©ãŒãã³ã¹ ãã§ã㯠|
|---|
|
ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æèŠæéãæ±ºå®ããŸãã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããåå ã確èªããã |
åé¡: ãžã§ãã¬ãŒã·ã§ã³ 0 ã倧ãããã
ãžã§ãã¬ãŒã·ã§ã³ 0 ã§ã¯ãç¹ã«ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯ãªããµãŒã㌠ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã䜿çšããå Žåã«ã64 ããã ã·ã¹ãã äžã®ãªããžã§ã¯ãã®æ°ãå€ããªãå¯èœæ§ããããŸãã ããã¯ããããã®ç°å¢ã§ã¯ãžã§ãã¬ãŒã·ã§ã³ 0 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãããªã¬ãŒãããããå€ãé«ãããžã§ãã¬ãŒã·ã§ã³ 0 ã®ã³ã¬ã¯ã·ã§ã³ãã¯ããã«å€§ãããªãå¯èœæ§ãããããã§ãã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãããªã¬ãŒãããåã«ãã¢ããªã±ãŒã·ã§ã³ãããå€ãã®ã¡ã¢ãªãå²ãåœãŠããšãããã©ãŒãã³ã¹ãåäžããŸãã
åé¡: ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã® CPU 䜿çšçãé«ãããŸã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã¯ CPU 䜿çšçãé«ããªããŸãã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«åŠçæéãå€§å¹ ã«è²»ããããŠããå Žåãåéã®é »åºŠãé«ãããããæéãããããããŠããŸãã ãããŒãžã ããŒãäžã®ãªããžã§ã¯ãã®å²ãåœãŠçãé«ããªããšãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®å®è¡é »åºŠãé«ããªããŸãã å²ãåœãŠçãäžãããšãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®é »åºŠãæžå°ããŸãã
Allocated Bytes/second ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã䜿çšããŠãå²ãåœãŠçãç£èŠã§ããŸãã 詳现ã«ã€ããŠã¯ãã .NET ã®ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒããåç
§ããŠãã ããã
ã³ã¬ã¯ã·ã§ã³ã®æéã¯ãäž»ã«å²ãåœãŠåŸã«åç¶ãããªããžã§ã¯ãã®æ°ã®èŠå ã§ãã ã³ã¬ã¯ã·ã§ã³ã®å¯Ÿè±¡ãšãªããªããžã§ã¯ããæ°å€ãæ®ã£ãŠãããšãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã倧éã®ã¡ã¢ãªãåŠçããªããã°ãªããªããªããŸãã çåè ãå§çž®ããäœæ¥ã«ã¯æéãããããŸãã ã³ã¬ã¯ã·ã§ã³äžã«åŠçããããªããžã§ã¯ãã®æ°ã確èªããã«ã¯ãæå®ããäžä»£ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æåŸã«ãããã¬ãŒã«ãã¬ãŒã¯ãã€ã³ããèšå®ããŸãã
ãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ã¬ã€ãã©ã€ã³
ãã®ã»ã¯ã·ã§ã³ã§ã¯ã調æ»ãéå§ãããšãã«èæ ®ããå¿ èŠãããã¬ã€ãã©ã€ã³ã«ã€ããŠèª¬æããŸãã
ã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ããµãŒããŒã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã
䜿çšããŠããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çš®é¡ãæ£ãããã©ããã確èªããŸãã ã¢ããªã±ãŒã·ã§ã³ã§è€æ°ã®ã¹ã¬ãããšãªããžã§ã¯ã ã€ã³ã¹ã¿ã³ã¹ã䜿çšããå Žåã¯ãã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯ãªããµãŒã㌠ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã䜿çšããŸãã ãµãŒã㌠ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯è€æ°ã®ã¹ã¬ããã§åäœããŸãããã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®ã€ã³ã¹ã¿ã³ã¹ãç¬èªã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ã¹ã¬ãããå®è¡ããCPU æéãç«¶ãå¿ èŠããããŸãã
è² è·ãäœããããã¯ã°ã©ãŠã³ãã§ããŸã«ã¿ã¹ã¯ãå®è¡ãããµãŒãã¹ã®ãããªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãåæå®è¡ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãç¡å¹ã«ããã¯ãŒã¯ã¹ããŒã·ã§ã³ ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã䜿çšã§ããŸãã
ãããŒãžã ããŒã ãµã€ãºã枬å®ããã¿ã€ãã³ã°
ãããã¡ã€ã©ãŒã䜿çšããŠããå Žåãé€ããããã©ãŒãã³ã¹ã®åé¡ã广çã«èšºæããã«ã¯ãäžè²«ããæž¬å®ãã¿ãŒã³ã確ç«ããå¿ èŠããããŸãã ã¹ã±ãžã¥ãŒã«ã確ç«ããã«ã¯ã次ã®ç¹ãèæ ®ããŠãã ããã
- ãžã§ãã¬ãŒã·ã§ã³ 2 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®åŸã«æž¬å®ããå Žåã¯ããããŒãžã ããŒãå šäœããã¬ããŒãž (æ»ãã ç¶æ ã®ãªããžã§ã¯ã) ããªããªã£ãŠããŸãã
- ãžã§ãã¬ãŒã·ã§ã³ 0 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çŽåŸã«æž¬å®ããå Žåããžã§ãã¬ãŒã·ã§ã³ 1 ãšãžã§ãã¬ãŒã·ã§ã³ 2 ã®ãªããžã§ã¯ãã¯ãŸã åéãããŸããã
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çŽåã«æž¬å®ããå Žåã¯ãã©ã®ãããã®å²ãåœãŠãè¡ããããšã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãéå§ãããã®ããæž¬å®ãããŸãã
- ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã®ããŒã¿æ§é ããã©ããŒãµã«ã«å¯ŸããŠæå¹ãªç¶æ ã§ã¯ãªããå®å šãªçµæãåŸãããªãå¯èœæ§ããããããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã®æž¬å®ã«ã¯åé¡ããããŸãã ããã¯ä»æ§ã§ãã
- åæå®è¡ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãæå¹ã«ããŠã¯ãŒã¯ã¹ããŒã·ã§ã³ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã䜿çšããŠããå Žåã¯ãè§£æŸããããªããžã§ã¯ããå§çž®ãããªããããããŒã ãµã€ãºãå€ãããªãã£ãã倧ãããªã£ãŠãããããããšããããŸã (æçåã®ããã«å€§ããèŠããããšããããŸã)ã
- ç©çã¡ã¢ãªã®è² è·ãé«ããããšããžã§ãã¬ãŒã·ã§ã³ 2 ã§ã®åæå®è¡ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãé å»¶ããŸãã
æ¬¡ã®æé ã§ã¯ããããŒãžã ããŒããæž¬å®ã§ããããã«ãã¬ãŒã¯ãã€ã³ããèšå®ããæ¹æ³ã«ã€ããŠèª¬æããŸãã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çµäºæã«ãã¬ãŒã¯ãã€ã³ããèšå®ããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ã§ã次ã®ã³ãã³ããå ¥åããŸãã
bp mscorwks!WKS::GCHeap::RestartEE "j (dwo(mscorwks!WKS::GCHeap::GcCondemnedGeneration)==2) 'kb';'g'"GcCondemnedGenerationãç®çã®äžä»£ã«èšå®ããŸãã ãã®ã³ãã³ãã«ã¯ãã©ã€ããŒã ã·ã³ãã«ãå¿ èŠã§ãããžã§ãã¬ãŒã·ã§ã³ 2 ã®ãªããžã§ã¯ããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³çšã«åå©çšãããåŸã«
RestartEEãå®è¡ãããå Žåããã®ã³ãã³ãã¯åŒ·å¶çã«äžæããŸãããµãŒã㌠ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯ã
RestartEEåŒã³åºãã¹ã¬ãã㯠1 ã€ã ãã§ããããããã¬ãŒã¯ãã€ã³ãã¯ãžã§ãã¬ãŒã·ã§ã³ 2 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã« 1 åã ãçºçããŸãã
ããã©ãŒãã³ã¹ ãã§ãã¯ã®æé
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãããã©ãŒãã³ã¹ã®åé¡ã®åå ãç¹å®ããããã®æ¬¡ã®æé ã«ã€ããŠèª¬æããŸãã
- åé¡ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«ãã£ãŠçºçããŠãããã©ããã確èªããŸãã
- ã¡ã¢ãªäžè¶³äŸå€ã管çãããŠãããã©ããã倿ããŸãã
- äºçŽã§ããä»®æ³ã¡ã¢ãªã®éãæ±ºå®ããŸãã
- ååãªç©çã¡ã¢ãªããããã©ããã倿ããŸãã
- ãããŒãžã ããŒããã³ãããããŠããã¡ã¢ãªã®éã確èªããŸãã
- ãããŒãžã ããŒããäºçŽããã¡ã¢ãªã®éãæ±ºå®ããŸãã
- 第 2 äžä»£ã®å€§ããªãªããžã§ã¯ããç¹å®ããŸãã
- ãªããžã§ã¯ããžã®åç §ãæ±ºå®ããŸãã
- ãã¡ã€ãã©ã€ã¶ãŒãå®è¡ããããã©ããã確èªããŸãã
- æçµåŠçãåŸ æ©ããŠãããªããžã§ã¯ãããããã©ããã倿ããŸãã
- ãããŒãžã ããŒãå ã®ç©ºãé åã®éãæ±ºå®ããŸãã
- ãã³çãããããªããžã§ã¯ãã®æ°ã決å®ããŸãã
- ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã®æèŠæéãæ±ºå®ããŸãã
- ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããåå ã確èªããã
- CPU ã®äœ¿çšçãé«ãã®ã¯ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãåå ãã©ããã確èªããã
åé¡ã®åå ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«ãããã©ããã確èªããã«ã¯
次㮠2 ã€ã®ã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã確èªããŸãã
GC å ã§ã®æéå²åïŒ æåŸã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ãµã€ã¯ã«åŸã«ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®å®è¡ã«è²»ããããçµéæéã®å²åã衚瀺ããŸãã ãã®ã«ãŠã³ã¿ãŒã䜿çšãããšãã¬ããŒãž ã³ã¬ã¯ã¿ãŒããããŒãžã ããŒãã®é åã確ä¿ããããã«è²»ãããŠããæéãé·ãããªããã©ããã確èªã§ããŸãã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«è²»ããããæéãæ¯èŒçå°ãªãå Žåã¯ããããŒãžã ããŒãã®å€éšã«ãããªãœãŒã¹ã®åé¡ã瀺ããŠããå¯èœæ§ããããŸãã ãã®ã«ãŠã³ã¿ãŒã¯ãåæå®è¡ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯æ£ç¢ºãªå€ãåŸãããªãå¯èœæ§ããããŸãã
# ã³ããããããåèšãã€ãæ°ã ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã«ãã£ãŠçŸåšã³ããããããŠããä»®æ³ã¡ã¢ãªã®éã衚瀺ããŸãã ãã®ã«ãŠã³ã¿ãŒã䜿çšããŠãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã«ãã£ãŠæ¶è²»ãããã¡ã¢ãªããã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšãããã¡ã¢ãªã®éå°ãªéšåã§ãããã©ããã倿ããŸãã
ã»ãšãã©ã®ã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã¯ãåã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çµäºæã«æŽæ°ãããŸãã ãã®ãããæ å ±ãå¿ èŠãªçŸåšã®æ¡ä»¶ãåæ ãããŠããªãå¯èœæ§ããããŸãã
ã¡ã¢ãªäžè¶³äŸå€ã管çãããŠãããã©ããã確èªããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ãå°å·äŸå€ (
pe) ã³ãã³ããå ¥åããŸãã!peäŸå€ã管çãããŠããå Žåãæ¬¡ã®äŸã«ç€ºãããã«ã OutOfMemoryException ã¯äŸå€ã®çš®é¡ãšããŠè¡šç€ºãããŸãã
Exception object: 39594518 Exception type: System.OutOfMemoryException Message: <none> InnerException: <none> StackTrace (generated):åºåã§äŸå€ãæå®ãããŠããªãå Žåã¯ãã¡ã¢ãªäžè¶³äŸå€ã®å ã®ã¹ã¬ãããç¹å®ããå¿ èŠããããŸãã ãããã¬ãŒã§æ¬¡ã®ã³ãã³ããå ¥åããŠããã¹ãŠã®ã¹ã¬ãããšãã®åŒã³åºãå±¥æŽã衚瀺ããŸãã
~\*kbäŸå€åŒã³åºããããã¹ã¿ãã¯ãæã€ã¹ã¬ããã¯ã
RaiseTheExceptionåŒæ°ã«ãã£ãŠç€ºãããŸãã ããã¯ãããŒãžãäŸå€ãªããžã§ã¯ãã§ãã28adfb44 7923918f 5b61f2b4 00000000 5b61f2b4 mscorwks!RaiseTheException+0xa0次ã®ã³ãã³ãã䜿çšããŠãå ¥ãåã«ãªã£ãäŸå€ããã³ãã§ããŸãã
!pe -nestedäŸå€ãèŠã€ãããªãå Žåãã¡ã¢ãªäžè¶³äŸå€ã¯ã¢ã³ãããŒãž ã³ãŒãããçºçããŸãã
äºçŽã§ããä»®æ³ã¡ã¢ãªã®éã確èªããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ã§ã次ã®ã³ãã³ããå ¥åããŠæå€§ã®ç©ºãé åãååŸããŸãã
!address -summaryæå€§ã®ç©ºãé åã¯ã次ã®åºåã«ç€ºãããã«è¡šç€ºãããŸãã
Largest free region: Base 54000000 - Size 0003A980ãã®äŸã§ã¯ãæå€§ã®ç©ºãé åã®ãµã€ãºã¯çŽ 2,4000 KB (16 鲿°ã§ 3A980) ã§ãã ãã®é åã¯ãã¬ããŒãž ã³ã¬ã¯ã¿ãŒãã»ã°ã¡ã³ãã«å¿ èŠãšããé åãããã¯ããã«å°ãããªããŸãã
- ãŸã㯠-
vmstatã³ãã³ãã䜿çšããŸãã!vmstatæå€§ã®ç©ºãé åã¯ã次ã®åºåã«ç€ºãããã«ãMAXIMUM åã®æå€§å€ã§ãã
TYPE MINIMUM MAXIMUM AVERAGE BLK COUNT TOTAL ~~~~ ~~~~~~~ ~~~~~~~ ~~~~~~~ ~~~~~~~~~~ ~~~~ Free: Small 8K 64K 46K 36 1,671K Medium 80K 864K 349K 3 1,047K Large 1,384K 1,278,848K 151,834K 12 1,822,015K Summary 8K 1,278,848K 35,779K 51 1,824,735K
ååãªç©çã¡ã¢ãªããããã©ããã倿ããã«ã¯
Windows ã¿ã¹ã¯ ãããŒãžã£ãŒãèµ·åããŸãã
[
Performance] ã¿ãã§ãã³ããããããå€ã確èªããŸãã (Windows 7 ã§ã¯ãCommit (KB)ã®System groupãåç §ããŠãã ãã)ãTotalãLimitã«è¿ãå Žåã¯ãç©çã¡ã¢ãªãäžè¶³ããŠããŸãã
ãããŒãžã ããŒããã³ãããããŠããã¡ã¢ãªã®éã確èªããã«ã¯
# Total committed bytesã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã䜿çšããŠããããŒãžã ããŒããã³ãããããŠãããã€ãæ°ãååŸããŸãã ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ãã»ã°ã¡ã³ãã®ãã£ã³ã¯ãå¿ èŠã«å¿ããŠã³ãããããŸãããã¹ãŠãåæã«ã³ãããããã®ã§ã¯ãããŸãããæ³š
# Bytes in all Heapsããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã¯ããããŒãžã ããŒãã«ããå®éã®ã¡ã¢ãªäœ¿çšéã衚ããŠããªãããã䜿çšããªãã§ãã ããã äžä»£ã®ãµã€ãºã¯ãã®å€ã«å«ãŸããŠãããå®éã«ã¯ãããå€ãšãªããµã€ãºãã€ãŸããäžä»£ããªããžã§ã¯ãã§æºããããå Žåã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãèªçºãããµã€ãºã§ãã ãããã£ãŠããã®å€ã¯éåžž 0 ã§ãã
ãããŒãžã ããŒããäºçŽããã¡ã¢ãªã®éã確èªããã«ã¯
# Total reserved bytesã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã䜿çšããŸããã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ã»ã°ã¡ã³ãå ã®ã¡ã¢ãªãäºçŽãã
eeheapã³ãã³ãã䜿çšããŠã»ã°ã¡ã³ãã®éå§äœçœ®ã決å®ã§ããŸããVon Bedeutung
ã¬ããŒãž ã³ã¬ã¯ã¿ãŒãåã»ã°ã¡ã³ãã«å²ãåœãŠãã¡ã¢ãªã®éãæ±ºå®ã§ããŸãããã»ã°ã¡ã³ã ãµã€ãºã¯å®è£ åºæã§ããã宿çãªæŽæ°ãå«ãããã€ã§ã倿Žãããå¯èœæ§ããããŸãã ã¢ããªã§ã¯ãã»ã°ã¡ã³ã ãµã€ãºãæšæž¬ããããšããç¹å®ã®ã»ã°ã¡ã³ã ãµã€ãºã«äŸåããããšã絶察ã«é¿ããŠãã ããããŸããã»ã°ã¡ã³ãã®å²ãåœãŠã«äœ¿çšå¯èœãªã¡ã¢ãªã®éãæ§æããããšããŠããªããŸããã
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ã次ã®ã³ãã³ããå ¥åããŸãã
!eeheap -gcçµæã¯æ¬¡ã®ããã«ãªããŸãã
Number of GC Heaps: 2 ------------------------------ Heap 0 (002db550) generation 0 starts at 0x02abe29c generation 1 starts at 0x02abdd08 generation 2 starts at 0x02ab0038 ephemeral segment allocation context: none segment begin allocated size 02ab0000 02ab0038 02aceff4 0x0001efbc(126908) Large object heap starts at 0x0aab0038 segment begin allocated size 0aab0000 0aab0038 0aab2278 0x00002240(8768) Heap Size 0x211fc(135676) ------------------------------ Heap 1 (002dc958) generation 0 starts at 0x06ab1bd8 generation 1 starts at 0x06ab1bcc generation 2 starts at 0x06ab0038 ephemeral segment allocation context: none segment begin allocated size 06ab0000 06ab0038 06ab3be4 0x00003bac(15276) Large object heap starts at 0x0cab0038 segment begin allocated size 0cab0000 0cab0038 0cab0048 0x00000010(16) Heap Size 0x3bbc(15292) ------------------------------ GC Heap Size 0x24db8(150968)"segment" ã§ç€ºãããã¢ãã¬ã¹ã¯ãã»ã°ã¡ã³ãã®éå§ã¢ãã¬ã¹ã§ãã
第 2 äžä»£ã®ã©ãŒãž ãªããžã§ã¯ããç¹å®ããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ã次ã®ã³ãã³ããå ¥åããŸãã
!dumpheap âstatãããŒãžã ããŒãã倧ããå Žåã
dumpheapãå®äºãããŸã§ã«æéããããå ŽåããããŸããæãå€ãã®ã¹ããŒã¹ã䜿çšãããªããžã§ã¯ããäžèŠ§è¡šç€ºããããããåºåã®æåŸã®æ°è¡ããåæãéå§ã§ããŸãã äŸãã°æ¬¡ãæããããŸãã
2c6108d4 173712 14591808 DevExpress.XtraGrid.Views.Grid.ViewInfo.GridCellInfo 00155f80 533 15216804 Free 7a747c78 791070 15821400 System.Collections.Specialized.ListDictionary+DictionaryNode 7a747bac 700930 19626040 System.Collections.Specialized.ListDictionary 2c64e36c 78644 20762016 DevExpress.XtraEditors.ViewInfo.TextEditViewInfo 79124228 121143 29064120 System.Object[] 035f0ee4 81626 35588936 Toolkit.TlkOrder 00fcae40 6193 44911636 WaveBasedStrategy.Tick_Snap[] 791242ec 40182 90664128 System.Collections.Hashtable+bucket[] 790fa3e0 3154024 137881448 System.String Total 8454945 objectsãªã¹ããããŠããæåŸã®ãªããžã§ã¯ãã¯æååã§ãããæãå€ãã®é åãå æããŸãã ã¢ããªã±ãŒã·ã§ã³ã調ã¹ãŠãæååãªããžã§ã¯ããæé©åããæ¹æ³ã確èªã§ããŸãã 150 ~ 200 ãã€ãã®æååã衚瀺ããã«ã¯ã次ã®ããã«å ¥åããŸãã
!dumpheap -type System.String -min 150 -max 200çµæã®äŸã次ã«ç€ºããŸãã
Address MT Size Gen 1875d2c0 790fa3e0 152 2 System.String HighlightNullStyle_Blotter_PendingOrder-11_Blotter_PendingOrder-11 âŠID ã«æååã®ä»£ããã«æŽæ°ã䜿çšããæ¹ãå¹ççã§ãã åãæååãäœååãç¹°ãè¿ãããŠããå Žåã¯ãæååã®ã€ã³ã¿ãŒã³ãæ€èšããŠãã ããã æååã®ã€ã³ã¿ãŒãã³ã°ã®è©³ããã¯ãString.Intern ã¡ãœããã®åç §æ å ±ãã芧ãã ããã
ãªããžã§ã¯ããžã®åç §ãæ±ºå®ããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ã§ã次ã®ã³ãã³ããå ¥åããŠãªããžã§ã¯ããžã®åç §ãäžèŠ§è¡šç€ºããŸãã
!gcroot- ãŸã㯠-
ç¹å®ã®ãªããžã§ã¯ãã®åç §ã確èªããã«ã¯ãã¢ãã¬ã¹ãå«ããŸãã
!gcroot 1c37b2acå±¥æŽã§èŠã€ããã«ãŒãã¯èª€æ€åºã§ããå¯èœæ§ããããŸãã 詳现ã«ã€ããŠã¯ãã³ãã³ã
!help gcrootã䜿çšããŠãã ãããebx:Root:19011c5c(System.Windows.Forms.Application+ThreadContext)-> 19010b78(DemoApp.FormDemoApp)-> 19011158(System.Windows.Forms.PropertyStore)-> ⊠[omitted] 1c3745ec(System.Data.DataTable)-> 1c3747a8(System.Data.DataColumnCollection)-> 1c3747f8(System.Collections.Hashtable)-> 1c376590(System.Collections.Hashtable+bucket[])-> 1c376c98(System.Data.DataColumn)-> 1c37b270(System.Data.Common.DoubleStorage)-> 1c37b2ac(System.Double[]) Scan Thread 0 OSTHread 99c Scan Thread 6 OSTHread 484gcrootã³ãã³ãã®å®äºã«ã¯é·ãæéããããå ŽåããããŸãã ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ã§ååãããªãã£ããªããžã§ã¯ãã¯ãã¢ã¯ãã£ããªããžã§ã¯ãã§ãã ã€ãŸããã«ãŒããçŽæ¥ãŸãã¯éæ¥çã«ãªããžã§ã¯ããä¿æããŠãããããgcrootã¯ãªããžã§ã¯ãã«ãã¹æ å ±ãè¿ãå¿ èŠããããŸãã è¿ãããã°ã©ãã調ã¹ãŠããããã®ãªããžã§ã¯ãããŸã åç §ãããŠããçç±ã確èªããå¿ èŠããããŸãã
ãã¡ã€ãã©ã€ã¶ãŒãå®è¡ããããã©ããã確èªããã«ã¯
次ã®ã³ãŒããå«ããã¹ã ããã°ã©ã ãå®è¡ããŸãã
GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect();ãã¹ãã§åé¡ã解決ãããå Žåãã¬ããŒãžã³ã¬ã¯ã¿ãŒããªããžã§ã¯ããååããŠããªãã£ãããšãæå³ããŸããããã¯ããããã®ãªããžã§ã¯ãã®ãã¡ã€ãã©ã€ã¶ãŒã忢ããŠããããã§ãã GC.WaitForPendingFinalizers ã¡ãœããã䜿çšãããšããã¡ã€ãã©ã€ã¶ãŒã¯ã¿ã¹ã¯ãå®äºããåé¡ãä¿®æ£ã§ããŸãã
æçµåŠçãåŸ æ©ããŠãããªããžã§ã¯ãããããã©ããã倿ããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ã次ã®ã³ãã³ããå ¥åããŸãã
!finalizequeueæçµåŠçã®æºåãã§ããŠãããªããžã§ã¯ãã®æ°ã確èªããŸãã æ°å€ã倧ããå Žåã¯ããããã®ãã¡ã€ãã©ã€ã¶ãŒããŸã£ããé²è¡ã§ããªããããŸãã¯ååãªéãã§é²è¡ã§ããªãçç±ã調ã¹ãå¿ èŠããããŸãã
ã¹ã¬ããã®åºåãååŸããã«ã¯ã次ã®ã³ãã³ããå ¥åããŸãã
!threads -specialãã®ã³ãã³ãã¯ã次ã®ãããªåºåãæäŸããŸãã
OSID Special thread type 2 cd0 DbgHelper 3 c18 Finalizer 4 df0 GC SuspendEEãã¡ã€ãã©ã€ã¶ãŒ ã¹ã¬ããã¯ãçŸåšå®è¡ãããŠãããã¡ã€ãã©ã€ã¶ãŒ (ããå Žå) ã瀺ããŸãã ãã¡ã€ãã©ã€ã¶ãŒ ã¹ã¬ããããã¡ã€ãã©ã€ã¶ãŒãå®è¡ããŠããªãå Žåãã€ãã³ãããã®åŠçãå®è¡ããããã«éç¥ããã®ãåŸ æ©ããŠããŸãã ã»ãšãã©ã®å Žåããã¡ã€ãã©ã€ã¶ãŒ ã¹ã¬ããã¯THREAD_HIGHEST_PRIORITYã§å®è¡ããããã¡ã€ãã©ã€ã¶ãŒãããå Žåã¯éåžžã«è¿ éã«å®è¡ãå®äºããããããã®ç¶æ ã«ãªããŸãã
ãããŒãžã ããŒãå ã®ç©ºãé åã®éã確èªããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ã次ã®ã³ãã³ããå ¥åããŸãã
!dumpheap -type Free -statãã®ã³ãã³ãã¯ã次ã®äŸã«ç€ºãããã«ããããŒãžã ããŒãäžã®ãã¹ãŠã®ç©ºããªããžã§ã¯ãã®åèšãµã€ãºã衚瀺ããŸãã
total 230 objects Statistics: MT Count TotalSize Class Name 00152b18 230 40958584 Free Total 230 objectsãžã§ãã¬ãŒã·ã§ã³ 0 ã®ç©ºãé åã確èªããã«ã¯ãäžä»£å¥ã®ã¡ã¢ãªæ¶è²»æ å ±ã«å¯ŸããŠæ¬¡ã®ã³ãã³ããå ¥åããŸãã
!eeheap -gcãã®ã³ãã³ãã¯ã次ã®ãããªåºåã衚瀺ããŸãã æåŸã®è¡ã«ã¯ããšãã§ã¡ã©ã« ã»ã°ã¡ã³ãã衚瀺ãããŸãã
Heap 0 (0015ad08) generation 0 starts at 0x49521f8c generation 1 starts at 0x494d7f64 generation 2 starts at 0x007f0038 ephemeral segment allocation context: none segment begin allocated size 00178250 7a80d84c 7a82f1cc 0x00021980(137600) 00161918 78c50e40 78c7056c 0x0001f72c(128812) 007f0000 007f0038 047eed28 0x03ffecf0(67103984) 3a120000 3a120038 3a3e84f8 0x002c84c0(2917568) 46120000 46120038 49e05d04 0x03ce5ccc(63855820)ãžã§ãã¬ãŒã·ã§ã³ 0 ã§äœ¿çšãããé åãèšç®ããŸãã
? 49e05d04-0x49521f8cçµæã¯æ¬¡ã®ããã«ãªããŸãã ãžã§ãã¬ãŒã·ã§ã³ 0 ã¯çŽ 9 MB ã§ãã
Evaluate expression: 9321848 = 008e3d78次ã®ã³ãã³ãã¯ããžã§ãã¬ãŒã·ã§ã³ 0 ã®ç¯å²å ã®ç©ºãé åããã³ãããŸãã
!dumpheap -type Free -stat 0x49521f8c 49e05d04çµæã¯æ¬¡ã®ããã«ãªããŸãã
------------------------------ Heap 0 total 409 objects ------------------------------ Heap 1 total 0 objects ------------------------------ Heap 2 total 0 objects ------------------------------ Heap 3 total 0 objects ------------------------------ total 409 objects Statistics: MT Count TotalSize Class Name 0015a498 409 7296540 Free Total 409 objectsãã®åºåã¯ãããŒãã®ç¬¬ 0 äžä»£éšåããªããžã§ã¯ãã« 9 MB ã®é åã䜿çšããŠããã7 MB ã®ç©ºã容éãããããšã瀺ããŠããŸãã ãã®åæã¯ããžã§ãã¬ãŒã·ã§ã³ 0 ãæçåã«ã©ã®çšåºŠå¯äžãããã瀺ããŠããŸãã ãã®ããŒã䜿çšéã¯ãé·æååšãããªããžã§ã¯ãã«ããæçåã®åå ãšããŠãåèšéããå·®ãåŒãå¿ èŠããããŸãã
ãã³çãããããªããžã§ã¯ãã®æ°ã確èªããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ã次ã®ã³ãã³ããå ¥åããŸãã
!gchandles次ã®äŸã«ç€ºãããã«ã衚瀺ãããçµ±èšæ å ±ã«ã¯ããã³çãããããã³ãã«ã®æ°ãå«ãŸããŸãã
GC Handle Statistics: Strong Handles: 29 Pinned Handles: 10
ãŽãåéããã»ã¹ã®æéã確èªããã«ã¯
% Time in GCã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã調ã¹ãŸãããã®å€ã¯ããµã³ãã«ééæéã䜿çšããŠèšç®ãããŸãã ã«ãŠã³ã¿ãŒã¯åã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æåŸã«æŽæ°ããããããçŸåšã®ãµã³ãã«ã¯ãééäžã«ã³ã¬ã¯ã·ã§ã³ãçºçããªãã£ãå Žåãåã®ãµã³ãã«ãšåãå€ã«ãªããŸãã
åéæéã¯ããµã³ãã«ééã®æéãšããŒã»ã³ãå€ãä¹ç®ããããšã«ãã£ãŠååŸãããŸãã
次ã®ããŒã¿ã¯ã8 ç§éã® 2 ç§ã® 4 ã€ã®ãµã³ããªã³ã°ééã瀺ããŠããŸãã
Gen0ãGen1ãããã³Gen2ã®åã«ã¯ããã®äžä»£ã®ééã®çµãããŸã§ã«å®äºããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®åèšæ°ã衚瀺ãããŸããInterval Gen0 Gen1 Gen2 % Time in GC 1 9 3 1 10 2 10 3 1 1 3 11 3 1 3 4 11 3 1 3ãã®æ å ±ã¯ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ããã€çºçãããã瀺ããŸããããäžå®ã®ééã§çºçããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æ°ãç¹å®ã§ããŸãã ææªã®å Žåã第 10 äžä»£ 0 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯ 2 çªç®ã®ééã®éå§æã«çµäºãã第 11 äžä»£ 0 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯ 3 çªç®ã®ééã®æåŸã«çµäºããŸããã 10 çªç®ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çµäºãã 11 çªç®ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çµäºãŸã§ã®æéã¯çŽ 2 ç§ã§ãããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã«ã¯ 3%ã衚瀺ãããããã第 11 äžä»£ 0 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æé㯠(2 ç§ * 3% = 60 ããªç§) ã§ããã
次ã®äŸã§ã¯ã5 ã€ã®ééããããŸãã
Interval Gen0 Gen1 Gen2 % Time in GC 1 9 3 1 3 2 10 3 1 1 3 11 4 1 1 4 11 4 1 1 5 11 4 2 20第 2 äžä»£ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯ã第 4 ã€ã³ã¿ãŒãã«ã§éå§ããã第 5 ã€ã³ã¿ãŒãã«ã§çµäºããŸããã ææªã®ã±ãŒã¹ãæ³å®ãããšãæåŸã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯ã3 çªç®ã®ééã®éå§æã«çµäºãããžã§ãã¬ãŒã·ã§ã³ 0 ã³ã¬ã¯ã·ã§ã³çšã§ããããžã§ãã¬ãŒã·ã§ã³ 2 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã¯ 5 çªç®ã®ééã®æåŸã«çµäºããŸããã ãã®ããããžã§ãã¬ãŒã·ã§ã³ 0 ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çµäºãããžã§ãã¬ãŒã·ã§ã³ 2 ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®çµäºãŸã§ã®æé㯠4 ç§ã§ãã
% Time in GCã«ãŠã³ã¿ãŒã¯ 20%ã§ããããããžã§ãã¬ãŒã·ã§ã³ 2 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«ãããæå€§æé㯠(4 ç§ * 20% = 800 ããªç§) ã§ãããŸãã¯ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ ETW ã€ãã³ãã䜿çšããŠã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®é·ãã倿ããæ å ±ãåæããŠã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æéãæ±ºå®ããããšãã§ããŸãã
ããšãã°ã次ã®ããŒã¿ã¯ãéåæå®è¡ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã«çºçããã€ãã³ã ã·ãŒã±ã³ã¹ã瀺ããŠããŸãã
Timestamp Event name 513052 GCSuspendEEBegin_V1 513078 GCSuspendEEEnd 513090 GCStart_V1 517890 GCEnd_V1 517894 GCHeapStats 517897 GCRestartEEBegin 517918 GCRestartEEEndãããŒãžã ã¹ã¬ããã®äžæã«ã¯ 26ãã€ã¯ãç§ (
GCSuspendEEEndâGCSuspendEEBegin_V1) ããããŸãããå®éã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã« 4.8 ããªç§ããã£ãŠããŸã (
GCEnd_V1âGCStart_V1)ããããŒãžã ã¹ã¬ããã®åéã«ã¯ 21us (
GCRestartEEEndâGCRestartEEBegin) ããããŸãããæ¬¡ã®åºåã¯ãããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®äŸã瀺ããããã»ã¹ãã¹ã¬ãããããã³ã€ãã³ã ãã£ãŒã«ããå«ã¿ãŸãã (ãã¹ãŠã®ããŒã¿ã衚瀺ãããããã§ã¯ãããŸãã)ã
timestamp(us) event name process thread event field 42504385 GCSuspendEEBegin_V1 Test.exe 4372 1 42504648 GCSuspendEEEnd Test.exe 4372 42504816 GCStart_V1 Test.exe 4372 102019 42504907 GCStart_V1 Test.exe 4372 102020 42514170 GCEnd_V1 Test.exe 4372 42514204 GCHeapStats Test.exe 4372 102020 42832052 GCRestartEEBegin Test.exe 4372 42832136 GCRestartEEEnd Test.exe 4372 63685394 GCSuspendEEBegin_V1 Test.exe 4744 6 63686347 GCSuspendEEEnd Test.exe 4744 63784294 GCRestartEEBegin Test.exe 4744 63784407 GCRestartEEEnd Test.exe 4744 89931423 GCEnd_V1 Test.exe 4372 102019 89931464 GCHeapStats Test.exe 437242504816ã®
GCStart_V1ã€ãã³ãã¯ãæåŸã®ãã£ãŒã«ãã1ãããŠããããããããããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ããããšã瀺ããŸãã ããã¯ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ No. 102019 ã«ãªããŸããGCStartã€ãã³ãã¯ãããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãéå§ããåã«ãšãã§ã¡ã©ã« ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãå¿ èŠã§ããããã«çºçããŸãã ããããŽãåéçªå· 102020 ã§ãã42514170ã§ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³çªå·102020ãçµäºããŸããã ãã®æç¹ã§ããããŒãžã ã¹ã¬ãããåèµ·åãããŸãã ããã¯ããã®ããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãããªã¬ãŒããã¹ã¬ãã 4372 ã§å®äºããŸãã
ã¹ã¬ãã 4744 ã§ã¯ãäžæãçºçããŸãã ããã¯ãããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ããããŒãžã ã¹ã¬ãããäžæããå¿ èŠãããå¯äžã®æéã§ãã ãã®æéã¯çŽ 99 ããªç§ ((63784407-63685394)/1000)ã
ããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®
GCEndã€ãã³ãã¯ã89931423ã§çºçããŸãã ããã¯ãããã¯ã°ã©ãŠã³ã ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçŽ 47 ç§ç¶ãã ((89931423-42504816)/1000) ããšãæå³ããŸãããããŒãžã ã¹ã¬ããã®å®è¡äžã«ãä»»æã®æ°ã®ãšãã§ã¡ã©ã« ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããŠããããšãããããŸãã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããåå ã確èªããã«ã¯
SOS ãããã¬ãŒæ¡åŒµæ©èœãèªã¿èŸŒãŸãã WinDbg ãŸã㯠Visual Studio ãããã¬ãŒã§ã次ã®ã³ãã³ããå ¥åããŠããã¹ãŠã®ã¹ã¬ãããšãã®åŒã³åºãå±¥æŽã衚瀺ããŸãã
~*kb
ãã®ã³ãã³ãã¯ã次ã®ãããªåºåã衚瀺ããŸãã
0012f3b0 79ff0bf8 mscorwks!WKS::GCHeap::GarbageCollect 0012f454 30002894 mscorwks!GCInterface::CollectGeneration+0xa4 0012f490 79fa22bd fragment_ni!request.Main(System.String[])+0x48ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ããã®ã¡ã¢ãªäžè¶³ã®éç¥ã«ãã£ãŠçºçããå ŽåãåŒã³åºãå±¥æŽã¯äŒŒãŠããŸãããã¹ã¬ããããã¡ã€ãã©ã€ã¶ãŒ ã¹ã¬ããã§ããç¹ãç°ãªããŸãã ãã¡ã€ãã©ã€ã¶ãŒ ã¹ã¬ããã¯éåæã®ã¡ã¢ãªäžè¶³éç¥ãååŸããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãèªçºããŸãã
ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãã¡ã¢ãªå²ãåœãŠã«ãã£ãŠçºçããå Žåãã¹ã¿ãã¯ã¯æ¬¡ã®ããã«è¡šç€ºãããŸãã
0012f230 7a07c551 mscorwks!WKS::GCHeap::GarbageCollectGeneration 0012f2b8 7a07cba8 mscorwks!WKS::gc_heap::try_allocate_more_space+0x1a1 0012f2d4 7a07cefb mscorwks!WKS::gc_heap::allocate_more_space+0x18 0012f2f4 7a02a51b mscorwks!WKS::GCHeap::Alloc+0x4b 0012f310 7a02ae4c mscorwks!Alloc+0x60 0012f364 7a030e46 mscorwks!FastAllocatePrimitiveArray+0xbd 0012f424 300027f4 mscorwks!JIT_NewArr1+0x148 000af70f 3000299f fragment_ni!request..ctor(Int32, Single)+0x20c 0000002a 79fa22bd fragment_ni!request.Main(System.String[])+0x153Just-In-Time ãã«ã㌠(
JIT_New*) ã¯æçµçã«GCHeap::GarbageCollectGenerationãåŒã³åºããŸãã ãžã§ãã¬ãŒã·ã§ã³ 2 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãå²ãåœãŠã«ãã£ãŠçºçããŠãããšå€æããå Žåã¯ããžã§ãã¬ãŒã·ã§ã³ 2 ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«ãã£ãŠåéããããªããžã§ã¯ããšãã®åé¿æ¹æ³ã決å®ããå¿ èŠããããŸãã ã€ãŸãããžã§ãã¬ãŒã·ã§ã³ 2 ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®éå§ãšçµäºãããã³ãžã§ãã¬ãŒã·ã§ã³ 2 ã³ã¬ã¯ã·ã§ã³ã®åå ãšãªã£ããªããžã§ã¯ãã®éãã確èªããå¿ èŠããããŸããããšãã°ããããã¬ãŒã§æ¬¡ã®ã³ãã³ããå ¥åããŠããžã§ãã¬ãŒã·ã§ã³ 2 ã®ã³ã¬ã¯ã·ã§ã³ã®å é ã衚瀺ããŸãã
!dumpheap âstatåºåäŸ (æãå€ãã®ã¹ããŒã¹ã䜿çšãããªããžã§ã¯ãã瀺ãããã«ç°¡ç¥å):
79124228 31857 9862328 System.Object[] 035f0384 25668 11601936 Toolkit.TlkPosition 00155f80 21248 12256296 Free 79103b6c 297003 13068132 System.Threading.ReaderWriterLock 7a747ad4 708732 14174640 System.Collections.Specialized.HybridDictionary 7a747c78 786498 15729960 System.Collections.Specialized.ListDictionary+DictionaryNode 7a747bac 700298 19608344 System.Collections.Specialized.ListDictionary 035f0ee4 89192 38887712 Toolkit.TlkOrder 00fcae40 6193 44911636 WaveBasedStrategy.Tick_Snap[] 7912c444 91616 71887080 System.Double[] 791242ec 32451 82462728 System.Collections.Hashtable+bucket[] 790fa3e0 2459154 112128436 System.String Total 6471774 objects第 2 äžä»£ã®æåŸã«ã³ãã³ããç¹°ãè¿ããŸãã
!dumpheap âstatåºåäŸ (æãå€ãã®ã¹ããŒã¹ã䜿çšãããªããžã§ã¯ãã瀺ãããã«ç°¡ç¥å):
79124228 26648 9314256 System.Object[] 035f0384 25668 11601936 Toolkit.TlkPosition 79103b6c 296770 13057880 System.Threading.ReaderWriterLock 7a747ad4 708730 14174600 System.Collections.Specialized.HybridDictionary 7a747c78 786497 15729940 System.Collections.Specialized.ListDictionary+DictionaryNode 7a747bac 700298 19608344 System.Collections.Specialized.ListDictionary 00155f80 13806 34007212 Free 035f0ee4 89187 38885532 Toolkit.TlkOrder 00fcae40 6193 44911636 WaveBasedStrategy.Tick_Snap[] 791242ec 32370 82359768 System.Collections.Hashtable+bucket[] 790fa3e0 2440020 111341808 System.String Total 6417525 objectsdouble[]ãªããžã§ã¯ãã¯åºåã®æ«å°Ÿããæ¶ããŸãããã€ãŸãããããã®ãªããžã§ã¯ããååãããããšãæå³ããŸãã ãããã®ãªããžã§ã¯ãã¯çŽ 70 MB ãå ããã æ®ãã®ãªããžã§ã¯ãã¯ããŸã倿ŽãããŸããã§ããã ãã®ããããããã®double[]ãªããžã§ã¯ããããã®ãžã§ãã¬ãŒã·ã§ã³ 2 ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçºçããçç±ã§ããã æ¬¡ã®æé ã§ã¯ãdouble[]ãªããžã§ã¯ããååšããçç±ãšããã®ãªããžã§ã¯ããæ»ãã çç±ã倿ããŸãã ãããã®ãªããžã§ã¯ãã®ç±æ¥ãã³ãŒãéçºè ã«åãåãããããšãã§ããŸãããgcrootã³ãã³ãã䜿çšããããšãã§ããŸãã
CPU 䜿çšçãé«ãããšãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«ãããã®ãã©ããã確èªããããã«
% Time in GCã¡ã¢ãª ããã©ãŒãã³ã¹ ã«ãŠã³ã¿ãŒã®å€ãšåŠçæéãé¢é£ä»ããŸãã% Time in GCå€ãåŠçæéãšåæã«æ¥å¢ãããšãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã«ãã£ãŠ CPU 䜿çšçãé«ããªããŸãã ãã以å€ã®å Žåã¯ãã¢ããªã±ãŒã·ã§ã³ããããã¡ã€ãªã³ã°ããŠã䜿çšçãé«ãå ŽæãèŠã€ããŸãã