1. Java ã§ã®ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã®ä»çµã¿
ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ãå®æçã«å®è¡ãããäžèŠã«ãªã£ããªããžã§ã¯ãã«ãã£ãŠäœ¿çšãããŠããã¡ã¢ãªã解æŸããåªå
床ã®äœãããã»ã¹ã§ããã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ãããã°ã©ã ãšäžŠè¡ããŠãå¥ã®ã¹ã¬ããã§ããã¯ã°ã©ãŠã³ãã§å®è¡ãããŸããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®åºç€ã¯åç
§ã«ãŠã³ãã§ã¯ãªãããªããžã§ã¯ãã 2 ã€ã®ã¿ã€ã (å°éå¯èœãšå°éäžèœ) ã«åé¢ããããšã§ãããªããžã§ã¯ãã¯ãå¥ã®å°éå¯èœãª (çããŠãã) ãªããžã§ã¯ãã«ãã£ãŠåç
§ãããŠããå Žåãå°éå¯èœãª (çããŠãã) ãšã¿ãªãããŸããå°éå¯èœæ§ã¯ã¹ã¬ããããã«ãŠã³ããããŸããå®è¡äžã®ã¹ã¬ããã¯ã誰ãåç
§ããŠããªããŠããåžžã«å°éå¯èœ (çããŠãã) ãšã¿ãªãããŸããJava ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯ãããŒããšåŒã°ããç¹å¥ãªã¡ã¢ãªé åã«æ ŒçŽãããŸããããã°ã©ã å
ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯ãæ¯èŒçåçŽãªãªããžã§ã¯ããšãé·æéåç¶ããããªããžã§ã¯ãã® 2 ã€ã®ã¿ã€ãã«åé¡ã§ããŸãããé·åœããªããžã§ã¯ããšã¯ãå€ãã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçµãŠãçãæ®ã£ããªããžã§ã¯ãã®ããšã§ããã»ãšãã©ã®å Žåããããã¯ããã°ã©ã ã®çµäºãŸã§ååšããŸãããã®çµæãäœæããããã¹ãŠã®ãªããžã§ã¯ããä¿åãããå
±éããŒãã¯ãããã€ãã®éšåã«åå²ãããŸãããæåã®éšåã«ã¯çŸããååãä»ããããŠããŸã - ãšãã³ (èæžã®ããšãã³ã®åã)ããªããžã§ã¯ãã¯äœæãããåŸã«ããã«çœ®ãããŸããæ°ãããªããžã§ã¯ããäœæãããšãã«ãæ°ãããªããžã§ã¯ãã«ã¡ã¢ãªãå²ãåœãŠãããã®ã¯ãã®éšåã§ããå€ãã®ãªããžã§ã¯ããäœæã§ãããã®é åã®ã¹ããŒã¹ããªããªããšãæåã®ãé«éãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãéå§ãããŸããã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯éåžžã«è³¢ããããŒãå
ã«ããã«ãããã® (ã¬ããŒãž ãªããžã§ã¯ããäœæ¥ãªããžã§ã¯ã) ã«å¿ããŠäœæ¥ã¢ã«ãŽãªãºã ãéžæãããšèšããªããã°ãªããŸãããã»ãšãã©ãã¹ãŠã®ãªããžã§ã¯ããã¬ããŒãžã§ããå Žåãã³ã¬ã¯ã¿ãŒã¯ãã©ã€ãããªããžã§ã¯ããããŒã¯ããŠå¥ã®ã¡ã¢ãªé åã«ç§»åãããã®åŸçŸåšã®é åãå®å
šã«ã¯ãªãŒã³ã¢ãããããŸãããŽããå°ãªãããã®å€§éšåãçãç©ã§å ããããŠããå Žåã¯ããŽãã«ããŒã¯ãä»ããŠæé€ããæ®ã£ãç©ãæŽçããŸããå°ãªããšã 1 åã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§çãæ®ã£ããã¹ãŠã®ãªããžã§ã¯ãã転éãããã¡ã¢ãªé åã¯ãçåã¹ããŒã¹ãšåŒã°ããŸããäžæ¹ããµãã€ãã« ã¹ããŒã¹ã¯äžä»£ã«åãããŠããŸããåãªããžã§ã¯ãã«ã¯ãçµéšããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æ°ã«åºã¥ããŠäžä»£ãå²ãåœãŠãããŸãã1 ã€ããå Žåã¯ã第 1 äžä»£ãã«å±ãã5 ã€ããå Žåã¯ã第 5 äžä»£ãã«å±ããŸããEden ãš Survival Space ã¯äžç·ã« Young Generation ãšåŒã°ãããšãªã¢ã圢æããŸããYoung Generation ã«å ããŠãããŒãã«ã¯ãã 1 ã€ã®ã¡ã¢ãªé åãOld Generation (ãæ§äžä»£ã) ããããŸãããããã¯ãå€ãã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãçµãŠãçãæ®ã£ããéåžžã«é·åœãªãªããžã§ã¯ãã§ããããããä»ã®ãã®ãšã¯å¥ã«ä¿ç®¡ããæ¹ãæçã§ãããããŠãæ§äžä»£ãšãªã¢ããã£ã±ãã®å Žåã®ã¿ãã€ãŸã ããã°ã©ã å
ã«åç¶æéã®é·ããªããžã§ã¯ããå€ãããŠã¡ã¢ãªãäžè¶³ããŠããå Žåã§ããå®å
šãªã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãå®è¡ãããŸãã1 ã€ã®ã¡ã¢ãªé åã ãã§ãªããé垞㯠Java ãã·ã³ã«ãã£ãŠäœæããããã¹ãŠã®ãªããžã§ã¯ããåŠçãããŸããåœç¶ã®ããšãªãããããå€ãã®æéãšãªãœãŒã¹ãå¿
èŠã«ãªããŸãããã®ããã寿åœã®é·ããã®ã¯å¥ã
ã«ä¿ç®¡ããããšã決å®ãããŸãããä»ã®ãšãªã¢ã§ã¹ããŒã¹ããªããªããšããããããè¿
éãªã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããå®è¡ãããŸããã«ããŒãããšãªã¢ã¯ 1 ã€ã ããªã®ã§ãããçµæžçã§é«éã§ããæåŸã«ãå€ãããäœãã§ããå±
äœè
ãäœããšãªã¢ããããã§ã«è©°ãŸã£ãŠããå Žåã¯ãå
šé¢çãªæž
æãå¿
èŠã«ãªããŸãããããã£ãŠãæããéããããŒã«ã¯ãå¿
èŠããªããªã£ãå Žåã«ã®ã¿ã¢ã»ã³ãã©ã«ãã£ãŠäœ¿çšãããŸãã
2. ã¬ããŒãž ã³ã¬ã¯ã¿ãŒã«ã¯ã©ã®ãããªçš®é¡ããããŸãã?
Java ã«ã¯ 7 çš®é¡ã®ã¬ããŒãž ã³ã¬ã¯ã¿ãŒããããŸãã
- ã·ãªã¢ã«ã¬ããŒãžã³ã¬ã¯ã¿ãŒ
- ãã©ã¬ã«ã¬ããŒãžã³ã¬ã¯ã¿ãŒ
- CMS ã¬ããŒãž ã³ã¬ã¯ã¿ãŒ
- G1 ã¬ããŒãž ã³ã¬ã¯ã¿ãŒ
- ã€ãã·ãã³ ã¬ããŒãž ã³ã¬ã¯ã¿ãŒ
- Zã¬ããŒãžã³ã¬ã¯ã¿ãŒ
- ã·ã§ãã³ã㌠ã¬ããŒãž ã³ã¬ã¯ã¿ãŒ
3. ãªããžã§ã¯ãã®ãäžä»£ããšã¯äœã§ãã
ãµãã€ãã« ã¹ããŒã¹å
ã®ãã¹ãŠã®ãªããžã§ã¯ãã¯äžä»£ã«åå²ãããŸããåãªããžã§ã¯ãã«ã¯ãçµéšããã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã®æ°ã«åºã¥ããŠäžä»£ãå²ãåœãŠãããŸãã1 ã€ããå Žåã¯ã第 1 äžä»£ãã«å±ãã5 ã€ããå Žåã¯ã第 5 äžä»£ãã«å±ããŸãã
4. SoftReference ã¯äœã«äœ¿çšãããŸãã?
ãœããåç
§ã«ãã£ãŠã®ã¿åç
§ããããªããžã§ã¯ãã¯ãããã°ã©ã ã®ã¡ã¢ãªãäžè¶³ãããšã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãããå¯èœæ§ããããŸããããã°ã©ã ãçªç¶ã¡ã¢ãªäžè¶³ã«ãªã£ãå ŽåãOutOfMemoryException ãã¹ããŒããåã«ãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ãœãã ãªã³ã¯ã«ãã£ãŠåç
§ããããã¹ãŠã®ãªããžã§ã¯ããåé€ããããã°ã©ã ã«ã¡ã¢ãªãå床å²ãåœãŠãããšããŸããSoftReference ã«ãã£ãŠã®ã¿æ»ãªãªãããã«ä¿ãããŠãããªããžã§ã¯ãã¯ãã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ãäœåºŠè¡ãããŠãçãæ®ãããšãã§ããŸãããããã°ã©ã ãã¡ã¢ãªã䜿ãæãããšããããç Žæ£ãããŸãã
5. SoftReferenceã®äœ¿çšäŸ
SoftReference ã¯ããã£ãã·ã¥çšã«ç¹å¥ã«èšèšãããŸãããã¯ã©ã€ã¢ã³ãããã°ã©ã ããµãŒããŒããã°ã©ã ã«å¯ŸããŠããŸããŸãªããŒã¿ãé »ç¹ã«èŠæ±ãããšããŸãã次ã«ããµãŒã㌠ããã°ã©ã ã¯ãSoftReference ã䜿çšããŠããããã®äžéšããã£ãã·ã¥ã§ããŸãããœããåç
§ã«ãã£ãŠæ»ããå®ãããŠãããªããžã§ã¯ããã¡ã¢ãªã®å€§éšåãå ããŠããå Žåãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã¯ããããåé€ããã ãã§çµããã§ãã
6. WeakReferenceã®äœ¿çšäŸ
ãªããžã§ã¯ããžã®åŒ±ãåç
§ãããªãå Žåããã®ãªããžã§ã¯ãã¯çããŠããŸããã次ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã«ç Žæ£ãããŸããWeakReference ã ãã«ãã£ãŠæ»ãªãªãããã«ãªã£ãŠãããªããžã§ã¯ãã¯ã次ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³ã§ã¯çãæ®ããŸããã
get()
ãã ãããããçºçãããŸã§ã¯ã WeakReference ã®ã¡ãœãããåŒã³åºããŠãã®ã¡ãœãããåŒã³åºãããä»ã®ããšãè¡ãããšã§ååŸã§ããŸããWeakReference ã®äœ¿çšäŸã¯ WeakHashMap ã§ãã
7. WeakHashMap ãå¿
èŠãªçç±
WeakHashMap ã¯ãããŒã匱ãåç
§ (WeakReference) ã§ãã HashMap ã§ãããªããžã§ã¯ãã®ã㢠(ããŒãšå€) ã WeakHashMap ã«ä¿åããŸãããã ããWeakHashMap ã¯ããŒãçŽæ¥åç
§ããã®ã§ã¯ãªããWeakReference ãéããŠåç
§ããŸãããããã£ãŠãããŒãšããŠäœ¿çšãããŠãããªããžã§ã¯ããå°éäžèœã«ãªããšããããã®ãªããžã§ã¯ãã¯æ¬¡ã®ã¬ããŒãž ã³ã¬ã¯ã·ã§ã³äžã«ç Žæ£ãããŸããããã¯ããããã®å€ã WeakHashMap ããèªåçã«åé€ãããããšãæå³ããŸããWeakHashMap ã¯ãäžéšã®ãªããžã§ã¯ãã®è¿œå æ
å ±ãä¿åããã®ã«éåžžã«äŸ¿å©ã§ãããŸãããªããžã§ã¯ãèªäœãããŒãšããŠäœ¿çšãããšãéåžžã«ç°¡åã«ååŸã§ããŸãã次ã«ããªããžã§ã¯ããç Žæ£ããããšããã®ãªããžã§ã¯ããšããã«é¢é£ä»ãããããã¹ãŠã®ããŒã¿ã HashMap ããæ¶ããŸããããšãã°ãããã°ã©ã ã«ã¯ãããã€ãã®ã¿ã¹ã¯ ãªããžã§ã¯ãã®äœæ¥ãç£èŠãããããã«é¢ããæ
å ±ããã°ã«æžã蟌ãã¹ã¬ããããããŸãããã®åŸããã®ã¹ã¬ããã¯è¿œè·¡ããããªããžã§ã¯ãããã®ãã㪠WeakHashMap ã«ä¿åã§ããŸãããªããžã§ã¯ããäžèŠã«ãªããšããã«ãã¬ããŒãž ã³ã¬ã¯ã¿ãŒã«ãã£ãŠãªããžã§ã¯ããåé€ãããWeakHashMap ããã®ãªããžã§ã¯ããžã®åç
§ãèªåçã«åé€ãããŸãã
8. ãã¬ãŒãšã¯äœã§ãã
Logger ãªããžã§ã¯ãã¯ãç¹å®ã®ã·ã¹ãã ãŸãã¯ã¢ããªã±ãŒã·ã§ã³ ã³ã³ããŒãã³ãã®ã¡ãã»ãŒãžããã°ã«èšé²ããããã«äœ¿çšãããŸãããã°ãšã¯ãçºçããã€ãã³ãã®ãªã¹ãã§ããã»ãšãã©ã®å ŽåãåŒã³åºãã«äœ¿çšãããã¡ãœãã ãã©ã¡ãŒã¿ãŒãã€ã³ã¿ãŒã»ããããããã¹ãŠã®ãšã©ãŒãããã³å€ãã®äžéæ
å ±ã«é¢ããæ
å ±ããã°ã«æžã蟌ãŸããŸãããã®ã³ã°ããã»ã¹å
šäœã¯ 3 ã€ã®éšåã§æ§æãããŸãã
- æåã®éšåã¯æ
å ±åéã§ãã
- 2 çªç®ã®éšåã¯ãåéãããæ
å ±ããã£ã«ã¿ãªã³ã°ããããšã§ãã
- 3 çªç®ã®éšåã¯ãéžæãããæ
å ±ã®èšé²ã§ãã
9. ãã¬ãŒã®ã»ããã¢ããæ¹æ³
- pom.xml ã«äŸåé¢ä¿ãè¿œå ããŸãã
- log4j.properties ãã¡ã€ã«ããªãœãŒã¹ã«è¿œå ããŸãã
éåžžãlog4j ãã¬ãŒèšå®ã¯ log4j.properties ãã¡ã€ã«ã§èšå®ãããŸãããã®ãã¡ã€ã«ã§ã¯ãããŒã¿ãæžã蟌ãŸãããªããžã§ã¯ãã§ããè€æ°ã®ã¢ãã³ããŒãæå®ã§ããŸãã
- ããžãã¹ ããžãã¯ãå«ãã¯ã©ã¹ã«è¿œå ããŸã
private static final Logger log = Logger.getLogger(Ñ
Ñ
Ñ
.class);
ã
䜿çšæžã¿ïŒ
GO TO FULL VERSION