Slide 1

Slide 1 text

̎࣌ؒूத JavaTM τϥϒϧղܾυϦϧ Ԭོ࡚೭ ιϑτ΢ΤΞɾϏδωε౷ׅຊ෦ Java ΤόϯδΣϦετ http://blogs.sun.com/okazaki

Slide 2

Slide 2 text

Copyright © 2007 Sun Microsystems K.K. 2 ηογϣϯ֓ཁ ͳ͔ͥτϥϒϧʹ·ͭΘΔҳ࿩͸਎ ͷճΓʹ͸ͨ͘͞Μɾɾɾɻ ຊ೔͸τϥϒϧղܾͷͨΊͷٕ͚ͩ Ͱ͸ͳ͘ɺߟ͑ํ΋͝঺հ͠·͢

Slide 3

Slide 3 text

Copyright © 2007 Sun Microsystems K.K. 3 ࣗݾ঺հ • Java ΤόϯδΣϦετ ( ෭ۀ ) > ϒϩάΛॻ͍ͨΓηϛφʔʹߦͬͨΓ͢Δ • ΞΠσϯςΟςΟ؅ཧ ( ຊۀ ) > ੡඼ͷ঺հ΍ɺఏҊ׆ಈͳͲ • ͦͷ·͑ > Java ίϯαϧςΟϯάͳͲ • ͦͷଞ > Sun ೖࣾ΋͏ؙ͙͢ 6 ೥໨ > ϓϩάϥϛϯάྺ 15 d 18 ೥

Slide 4

Slide 4 text

Copyright © 2007 Sun Microsystems K.K. 4 ࣗݾ঺հ ( ଓ͖ ) • աڈ̒೥ؒͷ࢓ࣄͷ܏޲ > ҰͭͷϓϩδΣΫτʹ௕ظؒࢀՃͨ͠ࣄ͸͋·Γͳ͍ > ಥવ࿩͕෣͍ࠐΜͰ͖ͯɺΑ͘Θ͔Βͳ͍··ࢀՃ͢Δ > ࢖༻͞Ε͍ͯΔςΫϊϩδʔ͕஌͍ͬͯΔ΋ͷ͚ͩͱ͸ݶ Βͳ͍ > ࡞ۀͷ༏ઌ౓͸͋Ε΋͜Ε΋ʮ࠷༏ઌʯͰ͋Δ

Slide 5

Slide 5 text

Copyright © 2007 Sun Microsystems K.K. 5 ຊ೔ͷ಺༰ʹؚ·Εͳ͍ͱ ͜Ζ • ஶ࡞ݖ΍ಛڐͷτϥϒϧͰࠔ͍ͬͯΔ • ͕Μ͹͍ͬͯΔͷʹɺڅྉΛ͋͛ͯ΋Β͑ͳ͍ • ରਓؔ܎ͷτϥϒϧͰࠔ͍ͬͯΔ • ϓϩδΣΫτ͕ຫੑతʹσεϚʔνͰɺൈ͚ग़͍ͨ͠

Slide 6

Slide 6 text

Copyright © 2007 Sun Microsystems K.K. 6 ຊ೔ͷ͍͍ͩͨͷ಺༰ • τϥϒϧʹ͍ͭͯͷ༧උ஌ࣝ • ۩ମతͳτϥϒϧʹ͍ͭͯͷ࿩ • τϥϒϧղܾೳྗΛߴΊΔํ๏ͷ࿩

Slide 7

Slide 7 text

Copyright © 2007 Sun Microsystems K.K. 7 υϦϧ 1: τϥϒϧͷ࣌ͬͯ ͜Μͳײ͡Ͱ͢ΑͶ

Slide 8

Slide 8 text

Copyright © 2007 Sun Microsystems K.K. 8 ࢥ͍ग़ͯ͠Έ͍ͯͩ͘͞ • τϥϒϧͰప໷Λͨ͜͠ͱ͕͋Δ • ؼ୐͠Α͏ͱͨ͠Βి࿩Ͱݺͼ໭͞Εͨ • ேى͖ͨΒܞଳʹண৴ཤྺ͕ͨ͘͞Μ • ͦͷଞ

Slide 9

Slide 9 text

Copyright © 2007 Sun Microsystems K.K. 9 ࢥ͍ग़ͯ͠Έ͍ͯͩ͘͞ • τϥϒϧͰప໷Λͨ͜͠ͱ͕͋Δ • ؼ୐͠Α͏ͱͨ͠Βి࿩Ͱݺͼ໭͞Εͨ • ேى͖ͨΒܞଳʹண৴ཤྺ͕ͨ͘͞Μ • ͦͷଞ • ௨ৗͷϧʔνϯ͸ػೳ͍ͯ͠ͳ͍ • ৘ใ͸͏·͘੔ཧ͞Ε͍ͯͳ͍ • ݱ৔͸ίϯτϩʔϧΛࣦ͍ͬͯΔ

Slide 10

Slide 10 text

Copyright © 2007 Sun Microsystems K.K. 10 ϓϩδΣΫτͷྲྀΕ τϥϒϧ ຊདྷͷྲྀΕ τϥϒϧʹΑΔྲྀΕ

Slide 11

Slide 11 text

Copyright © 2007 Sun Microsystems K.K. 11 ϓϩδΣΫτͷྲྀΕ τϥϒϧ ຊདྷͷྲྀΕ τϥϒϧʹΑΔྲྀΕ PM ʹΑΔ༧ଌൣғ

Slide 12

Slide 12 text

Copyright © 2007 Sun Microsystems K.K. 12 ϓϩδΣΫτͷྲྀΕ τϥϒϧ ຊདྷͷྲྀΕ τϥϒϧʹΑΔྲྀΕ τϥϒϧ γϡʔτ PM ʹΑΔ༧ଌൣғ

Slide 13

Slide 13 text

Copyright © 2007 Sun Microsystems K.K. 13 τϥϒϧղܾͷΈͪ͢͡ ৘ใΛऩूʗ੔ཧ͢Δ ίϯτϩʔϧΛऔΓ໭͢ ௨ৗͷϧʔνϯʹ໭͢

Slide 14

Slide 14 text

Copyright © 2007 Sun Microsystems K.K. 14 ίϯτϩʔϧΛऔΓ໭ͦ͏! • ͕Μ͹ͬͨਓΛඇ೉ͯ͠͸͍͚ͳ͍ > ͕Μ͹ͬͨਓ͸ঢ়گΛΑ͘஌͍ͬͯΔ • ͳΔ΂͘٬؍తͳ৘ใΛऩू͢Δ > ࠞཚ͍ͯ͠Δݱ৔Ͱ͸ώΞϦϯά݁Ռʹ͸ΏΒ͕͗͋Δ > ࢥ͍ (guess) ͱࣄ࣮ (fact) Λ۠ผ͢Δ > ݕࡧՄೳͳ৔ॴʹஔ͍͓ͯ͘ ( ϝʔϧϘοΫεɺ Wiki ɾɾɾ ) • Լखͳమ๒਺ଧͪΌ͋ͨΔɾɾɾ ? > ͋ͨΔݟࠐΈ͕௿͍ͷͰɺίετߴ > ͦΕͳΒɺͦ΋ͦ΋୯ମςετͰൃݟ͞Ε͍ͯͨͷͰ͸ ?

Slide 15

Slide 15 text

Copyright © 2007 Sun Microsystems K.K. 15 ίϯτϩʔϧΛऔΓ໭ͦ͏!( ଓ͖ ) • Կ͕࠷΋ѱӨڹΛٴ΅͍ͯ͠Δͷ͔ΛߜΓࠐΉ > ઀ଓͰ͖ͳ͍ ? > ύϑΥʔϚϯε ? > γεςϜΫϥογϡ ? > όά ? ͲΜͳόά ? • ԿΛղܾ͢Ε͹࠷΋ސ٬ຬ଍౓͕ߴ·Δͷ͔ ? > Ͳ͏͍͏࡞ۀΛ͢Ε͹࠷΋ت͹ΕΔͷ͔ ? > આಘࡐྉΛूΊΔ

Slide 16

Slide 16 text

Copyright © 2007 Sun Microsystems K.K. 16 Ͳ͔͜ΒखΛ෇͚Δ͔Λܾ ΊΔ ೉͍͠໰୊ ͔ΜͨΜͳ໰୊ ղܾʹΑΓސ٬ຬ଍౓͕ߴ·Δ ղܾͯ͠΋͋·Γຬ଍౓͸͔ΘΒͳ͍ ໰୊ 1 ໰୊ 2 ໰୊ 3 ໰୊ 4

Slide 17

Slide 17 text

Copyright © 2007 Sun Microsystems K.K. 17 Ͳ͔͜ΒखΛ෇͚Δ͔Λܾ ΊΔ ( ଓ͖ ) ೉͍͠໰୊ ͔ΜͨΜͳ໰୊ ղܾʹΑΓސ٬ຬ଍౓͕ߴ·Δ ղܾͯ͠΋͋·Γຬ଍౓͸͔ΘΒͳ͍ ໰୊ 1 ໰୊ 2 ໰୊ 3 ໰୊ 4 ݴ͍ͬͯΔਓʹΑͬͯมΘΓ΍͍͢ ఻ݴήʔϜʹΑͬͯมಈ͠΍͍͢

Slide 18

Slide 18 text

Copyright © 2007 Sun Microsystems K.K. 18 Ͳ͔͜ΒखΛ෇͚Δ͔Λܾ ΊΔ ( ଓ͖ ) • ͳΔ΂͘٬؍తͳදݱʹஔ͖׵͑ͯ༏ઌॱҐ෇͚ > ϏδωεɾΠϯύΫτ ( ֹۚɾӨڹϢʔβ਺ ) > ͳͥɺ XX ೔·Ͱʹղܾ͕ඞཁͳͷ͔ • աڈͷτϥϒϧʹ·ͭΘΔ΍ΓऔΓͷ܏޲ • ࠷΋͓٬༷ͱύΠϓΛ͍࣋ͬͯΔਓͷ௚ײΛ৴͡Δ • τϥϒϧղܾʹՃΘΔࣄͷͰ͖Δϝϯόʔͷྗྔ

Slide 19

Slide 19 text

Copyright © 2007 Sun Microsystems K.K. 19 υϦϧ̍ɿ·ͱΊ • ͳΔ΂͘٬؍తͳ৘ใΛूΊΔ • Ͳ͔͜ΒखΛ෇͚Δ͔ΛܾΊΔ • ίϯτϩʔϧΛऔΓ໭͢

Slide 20

Slide 20 text

Copyright © 2007 Sun Microsystems K.K. 20 υϦϧ 2: τϥϒϧͬͯݴ͏ͱ ͜Μͳ΍ͭͰ͢ΑͶ

Slide 21

Slide 21 text

Copyright © 2007 Sun Microsystems K.K. 21 ೉͍͠τϥϒϧͱ͍͑͹ɾɾɾ • ౴͕͑ҧ͏ • γεςϜΫϥογϡ • ࿈ܞઌʹ઀ଓͰ͖ͳ͍ • ϝϞϦෆ଍ • ύϑΥʔϚϯε͕Ͱͳ͍ • ηΩϡϦςΟͷ໰୊ • ͦͷଞ

Slide 22

Slide 22 text

Copyright © 2007 Sun Microsystems K.K. 22 ͳͥ೉͍͠ͷ͔ • ख͕͔Γ͕গͳ͍ > ϩάʹग़ྗ͞ΕΔ৘ใ͕গͳ͍౳ • खݩͷ؀ڥͰ͸࠶ݱ͠ͳ͍ > ؀ڥ΍σʔλʹґଘ ? • ѻ͏໰୊ͷݪҼ͕޿ൣғ > ݪҼͱͳΔ෦෼͕ࢸΔॴʹ֦ࢄ͍ͯ͠Δ • ࠜຊతͳ෦෼ʹݪҼ͕͋Δ > γεςϜΞʔΩςΫνϟ

Slide 23

Slide 23 text

Copyright © 2007 Sun Microsystems K.K. 23 ͳͥ೉͍͠ͷ͔ • ख͕͔Γ͕গͳ͍ > ϩάʹग़ྗ͞ΕΔ৘ใ͕গͳ͍౳ • खݩͷ؀ڥͰ͸࠶ݱ͠ͳ͍ > ؀ڥ΍σʔλʹґଘ ? • ѻ͏໰୊ͷݪҼ͕޿ൣғ > ݪҼͱͳΔ෦෼͕ࢸΔॴʹ֦ࢄ͍ͯ͠Δ • ࠜຊతͳ෦෼ʹݪҼ͕͋Δ > γεςϜΞʔΩςΫνϟ ݪҼෆ໌ ݪҼ͸ಛఆࡁΈ

Slide 24

Slide 24 text

Copyright © 2007 Sun Microsystems K.K. 24 ख͕͔Γ͕গͳ͍τϥϒϧ ղܾ • ϩάϨϕϧΛΑΓৄࡉʹ͢Δ > σόοάϩάͷ༗ޮԽ > ϓϩάϥϜʹϩάग़ྗΛ૊ΈࠐΉ > ίΞμϯϓΛऔಘͰ͖ΔΑ͏ʹઃఆ͢Δ • σόοΨ΍πʔϧΛ࢖͏ > ՄೳͳݶΓ༗ޮར༻͢Δ > ಈతͳ৘ใͷऔಘ΍ɺಈ࡞ͷ೺Ѳ

Slide 25

Slide 25 text

Copyright © 2007 Sun Microsystems K.K. 25 खݩͷ؀ڥͰ͸࠶ݱ͠ͳ͍ • ௕ظઓʹͳΔՄೳੑ͕ߴ͍ͷͰɺަবͷࡐྉΛू ΊΔ > ຊ൪؀ڥͰ͔͠ൃੜ͠ͳ͍໰୊ͷղܾ͸ࠔ೉ > σόοΨ΍πʔϧΛ༰қʹಋೖ͢Δࣄ͕Ͱ͖ͳ͍ > SOX ๏ʹΑΓɺຊ൪؀ڥʗσʔλΛ͔ͭͬͨ࠶ݱςετ͸ ΑΓࠔ೉ʹ > աڈͷྨࣅࣄྫ౳ͷ৘ใΛूΊΔ • ӡ༻ʹӨڹΛ༩͑ʹ͍͘πʔϧͷಋೖΛަব > Dtrace

Slide 26

Slide 26 text

Copyright © 2007 Sun Microsystems K.K. 26 ѻ͏໰୊ͷݪҼ͕޿ൣғ • ͳΔ΂ࣗ͘ಈԽͯ͠ղܾͰ͖Δํ๏Λߟ͑Δ > πʔϧͷಋೖ͋Δ͍͸εΫϦϓτΛ࡞੒ • ໢ཏతʹमਖ਼ʗରࡦ͕Ͱ͖͔ͨͲ͏͔Λௐ΂Δํ ๏Λ४උ͢Δ > πʔϧ΍εΫϦϓτʹΑΔϨϙʔτͷ࡞੒

Slide 27

Slide 27 text

Copyright © 2007 Sun Microsystems K.K. 27 ࠜຊతͳ෦෼ʹݪҼ͕͋Δ • ௕ظԽ͢ΔՄೳੑ͕ߴ͍ͷͰɺҰ࣌తͳճආࡦΛ ࡞੒ > ަবͷࡐྉΛूΊΔ > Ұ࣌తͳճආࡦͷ࡞੒΋ݕ౼͢Δ > े෼ަবͷࡐྉΛूΊͳ͍ͱɺҰ࣌తͳճආࡦ͕ͦͷ· ·࠾༻͞Εͯܧଓతʹ࠾༻͞ΕΔࣄʹɾɾɾ • ΞʔΩςΫνϟͷઃܭͰ͸z Simple is Best” ͕ͩɺ l Simple is Hard” Ͱ͋Δ͜ͱ΋Α͘ߟྀ͓ͯ͘͠

Slide 28

Slide 28 text

Copyright © 2007 Sun Microsystems K.K. 28 υϦϧ̎ɿ·ͱΊ • πʔϧ΍εΫϦϓτΛ࢖ͬͯͳΔ΂ ͘खؒΛল͘ • ϓϩάϥϜͷमਖ਼͚ͩͰͳ͘ɺ࡞ۀ ͕΍Γ΍͍͢Α͏ʹަবͷ४උ

Slide 29

Slide 29 text

Copyright © 2007 Sun Microsystems K.K. 29 υϦϧ 3: ࢖ͬͯͳ͍ͭ΋Γɻ Ͱ΋ɺ࢖͍ա͗

Slide 30

Slide 30 text

Copyright © 2007 Sun Microsystems K.K. 30 $ java JavaNightSeminar Exception in thread “main” java.lang.OutOfMemoryError

Slide 31

Slide 31 text

Copyright © 2007 Sun Microsystems K.K. 31 Q. OutOfMemoryError ͷݪҼ ͸ ? 1. OS ͷϝϞϦ͕଍Γͳ͘ͳͬͨ 2. Full GC ͕࣮ߦ͞ΕͨͨΊ ώʔϓྖҬ͕͜ΕҎ্֦ுͰ͖ͳ͍ Πϯελϯε਺͕ଟ͗͢Δ

Slide 32

Slide 32 text

Copyright © 2007 Sun Microsystems K.K. 32 Java VM ʹ͓͚ΔϝϞϦྖҬ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ

Slide 33

Slide 33 text

Copyright © 2007 Sun Microsystems K.K. 33 Java VM ʹ͓͚ΔϝϞϦྖҬ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ ωΠςΟϒϥΠϒϥϦ͕ malloc() ͨ͠ϝϞϦྖҬ εϨουͷωΠςΟϒɾελοΫྖҬ ωΠςΟϒελοΫ ωΠςΟϒελοΫ Java ελοΫ Java ελοΫ ωΠςΟϒελοΫ Java ελοΫ ωΠςΟϒελοΫྖҬαΠζ͸ -Xss Ͱࢦఆ

Slide 34

Slide 34 text

Copyright © 2007 Sun Microsystems K.K. 34 Java VM ʹ͓͚ΔϝϞϦྖҬ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ Java ΦϒδΣΫτͷΠϝʔδ͕ ֨ೲ͞ΕΔྖҬ εϨουͷ Java ελοΫྖҬ Java ελοΫྖҬαΠζ͸ -Xoss Ͱࢦఆ

Slide 35

Slide 35 text

Copyright © 2007 Sun Microsystems K.K. 35 Java VM ʹ͓͚ΔϝϞϦྖҬ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ Ϋϥεఆٛ΍ϝιουఆٛͳͲ PermGen ྖҬαΠζ͸ -XX:PermSize= ͓Αͼ -XX:MaxPermSize= Ͱࢦఆ

Slide 36

Slide 36 text

Copyright © 2007 Sun Microsystems K.K. 36 OutOfMemoryErrorʹͳΔঢ়گ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ Java ίʔυ PermGen ྖҬ ͲΕ͔ͻͱͭͷྖҬͰ΋ɺ ͜ΕҎ্֦ுͰ͖ͳ͘ͳͬͨ৔߹

Slide 37

Slide 37 text

Copyright © 2007 Sun Microsystems K.K. 37 ϝϞϦෆ଍ճආͷͨΊͷΞ Ϋγϣϯ ಺෦͕Ͳ͏ͳ͍ͬͯΔͷ͔Λ ϞχλϦϯά͢Δ

Slide 38

Slide 38 text

Copyright © 2007 Sun Microsystems K.K. 38 ϝϞϦෆ଍ճආͷͨΊͷΞ Ϋγϣϯ ಺෦͕Ͳ͏ͳ͍ͬͯΔͷ͔Λ ϞχλϦϯά͢Δ ಺ଁࢷ๱͕ɾɾɾ

Slide 39

Slide 39 text

Copyright © 2007 Sun Microsystems K.K. 39 VisualGC http://java.sun.com/performance/jvmstat/ ϝϞϦͷ࢖༻ঢ়گΛάϥϑΟΧϧʹදࣔ 1.4.2 5.0 6 JRE 1.4.2 Ͱ͸ -XX:+UsePerfData ͷ෇Ճ͕ඞཁ

Slide 40

Slide 40 text

Copyright © 2007 Sun Microsystems K.K. 40 jstat $ jstat -gcutil 2080 1000 S0 S1 E O P YGC YGCT FGC FGCT GCT 40.63 0.00 52.78 70.81 99.62 392 3.390 10 6.894 10.284 40.63 0.00 56.92 70.81 99.62 392 3.390 10 6.894 10.284 40.63 0.00 61.10 70.81 99.62 392 3.390 10 6.894 10.284 40.63 0.00 64.65 70.81 99.62 392 3.390 10 6.894 10.284 40.63 0.00 70.04 70.81 99.62 392 3.390 10 6.894 10.284 JRE 1.4.2 Ͱ͸ -XX:+UsePerfData ͷ෇Ճ͕ඞཁ JDK 6 ΑΓਖ਼ࣜπʔϧʹঢ֨ 1.4.2 5.0 6 Visual GC ͷίϚϯυϥΠϯ൛

Slide 41

Slide 41 text

Copyright © 2007 Sun Microsystems K.K. 41 jconsole JRE 5.0 Ͱ͸ -Dcom.sun.management.jmxremote ͷ෇Ճ͕ඞཁ JRE 6 Ͱ͸ಉҰϚγϯɺಉҰϢʔβͷ৔߹Φϓγϣϯෆཁ 1.4.2 5.0 6 ϝϞϦΛ͸͡Ίɺ Java VM ͓Αͼ ΞϓϦέʔγϣϯͷ༷ʑͳ৘ใΛ JMX ܦ༝ͰϞχλϦϯάɾ؅ཧՄೳ

Slide 42

Slide 42 text

Copyright © 2007 Sun Microsystems K.K. 42 JRE 5.0 Ҏ߱ʹ͓͚Δվળ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ Java ίʔυ PermGen ྖҬ Hello, 3642 Hello, 3643 Hello, 3644 Exception in thread "main" java.lang.OutOfMemoryError: PermGen space ͲͷྖҬͰ OutOfMemoryError ͱͳ͔ͬͨ දࣔ͞ΕΔΑ͏ʹվળ

Slide 43

Slide 43 text

Copyright © 2007 Sun Microsystems K.K. 43 Java SE 6 Ҏ߱ʹ͓͚Δվળ 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ Java ίʔυ PermGen ྖҬ Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:2882) at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100) at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:390) at java.lang.StringBuffer.append(StringBuffer.java:224) at JavaNightSeminar.main(JavaNightSeminar.java:6) ελοΫτϨʔε΋දࣔ͞ΕΔΑ͏ʹ

Slide 44

Slide 44 text

Copyright © 2007 Sun Microsystems K.K. 44 -XX:+HeapDumpOnOutOfMemoryError 1.4.2 5.0 6 ̘ʗωΠςΟϒ ώʔϓྖҬ Java ώʔϓྖҬ Java ίʔυ PermGen ྖҬ Java ίʔυ PermGen ྖҬ Hello, 2667 Hello, 2668 java.lang.OutOfMemoryError: PermGen space Dumping heap to java_pid148.hprof ... Heap dump file created [3771471 bytes in 0.200 secs] Exception in thread "main" java.lang.OutOfMemoryError: PermGen space OutOfMemoryError ൃੜ࣌ʹώʔϓͷ μϯϓΛੜ੒ ( ޙड़ͷπʔϧͰղੳ ) JRE 1.4.2_12 Ҏ߱ɺ JRE 1.5.0_07 Ҏ߱ɺ JRE 1.6.0 Ҏ߱Ͱαϙʔτ

Slide 45

Slide 45 text

Copyright © 2007 Sun Microsystems K.K. 45 ώʔϓμϯϓͷऔಘ(jmap) 1.4.2 5.0 6 $ jps 2080 Main 3864 jar 2348 jps $ jmap -dump:live,file=filename.dmp,format=b 2080 ࣮ߦதͷϓϩηεͷώʔϓμϯϓΛ ͋Β͔͡Ίର৅ JVM ʹΦϓγϣϯΛ Ճ࣮͑ͣߦՄೳ ( ಉҰϚγϯͷಉҰϢʔβͷΈ )

Slide 46

Slide 46 text

Copyright © 2007 Sun Microsystems K.K. 46 jhat (Java Heap Analysis Tool) 1.4.2 5.0 6 JDK 6 ඪ४౥ࡌͷπʔϧ ώʔϓͷ౷ܭ΍ɺΦϒδΣΫτͷࢀরؔ܎Λ ղੳ͢ΔͨΊͷπʔϧ (1.4.2 ͷμϯϓ΋ಡΈࠐΈՄೳ )

Slide 47

Slide 47 text

Copyright © 2007 Sun Microsystems K.K. 47 NetBeans 5.5 Profiler ώʔϓͷ࢖༻ঢ়گ΍ɺΠϯελϯεͷ ੜ੒ɾফ໓ঢ়گʹؔ͢Δ౷ܭΛऔಘ͠ ໰୊ՕॴΛ੾Γ෼͚ 1.4.2 5.0 6

Slide 48

Slide 48 text

Copyright © 2007 Sun Microsystems K.K. 48 NetBeans 6.0 Profiler ݱࡏ։ൃதͷ৽όʔδϣϯ ώʔϓͷμϯϓΛಡΈࠐΜͰɺΦϒδΣΫτͷ ࢀরؔ܎Λ෼ੳՄೳ 1.4.2 5.0 6 ։ൃத

Slide 49

Slide 49 text

Copyright © 2007 Sun Microsystems K.K. 49 ϝϞϦϦʔΫͷݟ͚ͭํ ౷ܭ৘ใ͔ΒϝϞϦΛ઎ڌ͍ͯ͠ΔΠϯελϯεͷछྨΛ൑ผ ྫ ) char[] ͕͋΍͍͠

Slide 50

Slide 50 text

Copyright © 2007 Sun Microsystems K.K. 50 ϝϞϦϦʔΫͷݟ͚ͭํ( ଓ͖ ) ϦʔΫΛҾ͖ى͍ͯ͜͠ΔՄೳੑͷ͋ΔιʔεΛ෼ੳ όοΫτϨʔεΛ֬ೝͯ͠ ո͍͠ΠϯελϯεΛ࡞͍ͬͯΔ ιʔεΛ୳Δ

Slide 51

Slide 51 text

Copyright © 2007 Sun Microsystems K.K. 51 ϝϞϦϦʔΫͷݟ͚ͭํ( ଓ͖ ) Πϯελϯεʹର͢ΔࢀরΛ௥੻ ෆཁͳ Πϯελϯε ଞͷ Πϯελϯε ࢀরؔ܎͕͋Δͱ GC Ͱճऩ͞Εͳ͍

Slide 52

Slide 52 text

Copyright © 2007 Sun Microsystems K.K. 52 υϦϧ̏ɿ·ͱΊ • OutOfMemoryError ʹͳΔ࢓૊ΈΛ೺ Ѳ͓ͯ͘͠ • JVM ͷػೳ΍πʔϧͷ࢖͍ํΛϚ ελʔ͓ͯ͘͠ •ద౓ͳӡಈΛͯ͠ංେԽ͠ͳ͍Α͏ ʹ͓ͯ͘͠

Slide 53

Slide 53 text

Copyright © 2007 Sun Microsystems K.K. 53 υϦϧ 4: ίʔυͷࢁΛ ໨ͷલʹͯ͠ɾɾɾ

Slide 54

Slide 54 text

Copyright © 2007 Sun Microsystems K.K. 54 Q. ίʔυϨϏϡʔͰେࣄͳࣄ ॏശͷ۱Λͭͭ͘Α͏ʹ͢Δ ࣄલʹ͋Δఔ౓౰ͨΓΛ෇͚͓ͯ͘ πʔϧΛ׆༻͢Δ େྔҹ࡮ͷ४උ ೜଱

Slide 55

Slide 55 text

Copyright © 2007 Sun Microsystems K.K. 55 ࣄલʹ౰ͨΓΛ෇͚͓ͯ͘ • ঱ঢ়΍աڈͷࣄྫ͔Βո͍͠෦෼Λಛఆ͓ͯ͘͠ • UML ϦόʔεΤϯδχΞϦϯάΛ࢖ͬͯ֓؍Λ೺Ѳ • ίʔυνΣοΫπʔϧΛ׆༻͢Δ > PMD (http://pmd.sourceforge.net) > Checkstyle (http://checkstyle.sourceforge.net) > FindBugs (http://findbugs.sourceforge.net)

Slide 56

Slide 56 text

Copyright © 2007 Sun Microsystems K.K. 56 UML ϦόʔεΤϯδχΞϦϯά • NetBeans 5.5 Enterprise Pack or UML Ϟδϡʔϧ (http://ja.netbeans.org)

Slide 57

Slide 57 text

Copyright © 2007 Sun Microsystems K.K. 57 ίʔυνΣοΫπʔϧ • ઃఆͨ͠ϧʔϧʹैͬͯιʔείʔυΛεΩϟϯ • ໢ཏੑ͕͋ΓɺҰ؏ͨ͠ϙϦγʔͰݕࠪՄೳ

Slide 58

Slide 58 text

Copyright © 2007 Sun Microsystems K.K. 58 Q1. όάΛ୳͍ͯͩ͘͠͞ for (int i = 0; i < 10; i++) { for (int j = 0; j < 20; i++) { total += a[i][j]; } }

Slide 59

Slide 59 text

Copyright © 2007 Sun Microsystems K.K. 59 A1. όάΛ୳͍ͯͩ͘͠͞ for (int i = 0; i < 10; i++) { for (int j = 0; j < 20; j++) { total += a[i][j]; } } i ͱ j ͷλΠϓϛε

Slide 60

Slide 60 text

Copyright © 2007 Sun Microsystems K.K. 60 Q2. όάΛ୳͍ͯͩ͘͠͞ public class Seminar { private String name; public boolean equals(Seminar s) { return name.equals(s.name) && name != null; } }

Slide 61

Slide 61 text

Copyright © 2007 Sun Microsystems K.K. 61 A2. όάΛ୳͍ͯͩ͘͠͞ public boolean equals(Object o) { if (o == null) return false; if (o instanceof Seminar) { Seminar s = (Seminar) o; return name != null && name.equals(s.name) } else return false; } null νΣοΫΛઌʹߦΘͳ͍ͱҙຯ͕ແ͍

Slide 62

Slide 62 text

Copyright © 2007 Sun Microsystems K.K. 62 A2. όάΛ୳͍ͯͩ͘͠͞ public boolean equals(Object o) { if (o == null) return false; if (o instanceof Seminar) { Seminar s = (Seminar) o; return name != null && name.equals(s.name) } else return false; } Ҿ਺͸ Object Ͱͳ͚Ε͹ͳΒͳ͍

Slide 63

Slide 63 text

Copyright © 2007 Sun Microsystems K.K. 63 A2. όάΛ୳͍ͯͩ͘͠͞ public class Seminar { public boolean equals(Object o) { ... } public int hashCode() { ... } } int hashCode() ΋࣮૷

Slide 64

Slide 64 text

Copyright © 2007 Sun Microsystems K.K. 64 େྔͷίʔυΛղੳ͢Δͱ ͖ • IDE ͷػೳ͸ศར͚ͩΕͲॏ͗͢Δ • ίʔυݕࡧΤϯδϯ΍ HTML ԽΛ׆༻ > େྔͷίʔυΛzϒϥ΢ζzͱ͍͏ҙຯͰ͸ Web ϒϥ΢β ͸࢖͍΍͍͢ > ઐ༻ιϑτ͸ݕࡧ΋Ͱ͖ͯߴ଎ • ίϚϯυϥΠϯͷڧΈ͸݈ࡏ > grep, find, awk, perl ͳͲͳͲ > IDE ͷػೳʹͳͯ͘΋ࣗ࡞͢Δ ( ͳΔ΂͘ίϯϐϡʔλʹ ࢓ࣄΛͤ͞Δ )

Slide 65

Slide 65 text

Copyright © 2007 Sun Microsystems K.K. 65 ίʔυݕࡧ: OpenGrok • OpenGrok > http://www.opensolaris.org/os/project/opengrok > OpenSolaris ϓϩδΣΫτͰ࡞੒͞ΕͨݕࡧʗΫϩεϦϑΝ ϨϯεΤϯδϯ > Java ͚ͩͰͳ͘ɺ C/C++ ɺγΣϧεΫϦϓτͳͲʹ΋ରԠ > ಋೖ͕͔ΜͨΜ

Slide 66

Slide 66 text

Copyright © 2007 Sun Microsystems K.K. 66 OpenGrok ͷಋೖ • ඞཁϑΝΠϧΛμ΢ϯϩʔυ > opengrok-0.4.tar.gz ... OpenGrok ຊମͱιʔε > http://www.opensolaris.org/os/project/opengrok > Exuberant ctags (http://ctags.sourceforge.net) > Java5.0 Ҏ্ > Tomcat͔ GlassFish > Subversion 1.3.0 (Subversion Λ࢖͏৔߹ͷΈ ) > Mercurial (Mercurial Λ࢖͏৔߹ͷΈ )

Slide 67

Slide 67 text

Copyright © 2007 Sun Microsystems K.K. 67 OpenGrok ΠϯσοΫεͷ࡞੒ (1) ىಈͯ͠ .. (2) ιʔεͱΠϯσοΫε֨ೲઌΛબ୒ (3) Update ͯ͠׬ྃ (opengrok.jar Λ࣮ߦ )

Slide 68

Slide 68 text

Copyright © 2007 Sun Microsystems K.K. 68 OpenGrok ιʔεͷݕࡧ(Swing)

Slide 69

Slide 69 text

Copyright © 2007 Sun Microsystems K.K. 69 OpenGrok ιʔεͷݕࡧ४උ(Web) ഑෍ϑΝΠϧ source.war ͷதʹ͋Δ WEB-INF/web.xml ʹ ΠϯσοΫεΛ࡞੒ͨ͠σΟϨΫτϦ (DATA_ROOT)ͱ ιʔείʔυͷσΟϨΫτϦ (SRC_ROOT) Λهड़ͯ͠σϓϩΠ

Slide 70

Slide 70 text

Copyright © 2007 Sun Microsystems K.K. 70 OpenGrok ιʔεͷݕࡧ४උ(Web) ΠϯσοΫεΛ࡞੒ͨ͠σΟϨΫτϦ (DATA_ROOT)ͱ ιʔείʔυͷσΟϨΫτϦ (SRC_ROOT) Λ web.xml ʹهड़ OpenGrok A wicked fast source browser DATA_ROOT /directory/containing/data SRC_ROOT /directory/containing/src

Slide 71

Slide 71 text

Copyright © 2007 Sun Microsystems K.K. 71 OpenGrok ιʔεͷݕࡧ(web)

Slide 72

Slide 72 text

Copyright © 2007 Sun Microsystems K.K. 72 OpenGrok ιʔεͷӾཡ(web)

Slide 73

Slide 73 text

Copyright © 2007 Sun Microsystems K.K. 73 υϦϧ̐ɿ·ͱΊ • ͍͖ͳΓࡉ͔͘ಡΈ࢝ΊΔલʹશ ମΛ೺Ѳ͓ͯ͘͠ • ໨తʹదͨ͠πʔϧΛ࢖͏ ( ྫ : νΣοΫπʔϧɺӾཡઐ༻ιϑτ )

Slide 74

Slide 74 text

Copyright © 2007 Sun Microsystems K.K. 74 υϦϧ 5: ଎͞͸ɺྗ

Slide 75

Slide 75 text

Copyright © 2007 Sun Microsystems K.K. 75 Q. νϡʔχϯάͰେࣄͳࣄ τϥΠˍΤϥʔ ίϝϯτΛ࡟ͬͯιʔεΛܰ͘͢Δ ͳΔ΂͘ΠϯελϯεΛ࠶ར༻͢ΔΑ͏ ʹίʔυΛॻ͖׵͑Δ ౷ܭσʔλΛऔಘ͢Δ

Slide 76

Slide 76 text

Copyright © 2007 Sun Microsystems K.K. 76 ౷ܭΛऔͬͯૂ͍ΛఆΊΔ • Ή΍ΈͳτϥΠˍΤϥʔ͸࣌ؒͷແବ • ౷ܭΛऔͬͯޮՌͷ͋Γͦ͏ͳͱ͜ΖΛ୳͢ > ॏ͍ॲཧ > ແବͳॲཧ > සൟʹݺͼग़͞ΕΔॲཧ > I/O ଴ͪ΍ଞγεςϜͷ࿈ܞ଴ͪ

Slide 77

Slide 77 text

Copyright © 2007 Sun Microsystems K.K. 77 ϨΠςϯγͱεϧʔϓοτ • νϡʔχϯά໨ඪ͸஫ҙਂ͘ઃఆ͢Δ > ϨΠςϯγ ( ฏۉԠ౴࣌ؒ ) > ྫ . ฏۉԠ౴ 700ms Ҏ಺ > εϧʔϓοτ ( ୯Ґ࣌ؒ͋ͨΓͷॲཧྔ ) > ྫ . 1 ෼ؒ͋ͨΓฏۉ 1300 τϥϯβΫγϣϯ

Slide 78

Slide 78 text

Copyright © 2007 Sun Microsystems K.K. 78 ϨΠςϯγͱεϧʔϓοτ ͷؔ܎ • Ϣʔβ਺ͷ૿Ճͱͱ΋ʹϨΠςϯγ͸૿Ճ • ͋ΔϢʔβ਺Λڥʹεϧʔϓοτ͸௿Լ Ϣʔβ਺

Slide 79

Slide 79 text

Copyright © 2007 Sun Microsystems K.K. 79 ϓϩϑΝΠϦϯά: NetBeans Profiler

Slide 80

Slide 80 text

Copyright © 2007 Sun Microsystems K.K. 80 ϓϩϑΝΠϦϯά: NetBeans Profiler

Slide 81

Slide 81 text

Copyright © 2007 Sun Microsystems K.K. 81 JMeter ͰεϧʔϓοτΛܭଌ͢Δ • ෛՙੜ੒ˍϨεϙϯεϩάऔಘ > ϩάΛՃ޻ͯ͠σʔλΛ෼ੳ 0 1000 2000 3000 4000 0 100 200 300 400 500 600 700 800 900 1000 1100 1200 ϘτϧωοΫ͕ݱΕ࢝Ίͨέʔε ฒྻ౓ ( ୯Ґ࣌ؒ 1 ඵ ) 0 25 50 75 100 125 150 175 0 20 40 60 80 100 120 140 160 180 ΄ͱΜͲϘτϧωοΫ͕ͳ͍έʔε ฒྻ౓ ( ୯Ґ࣌ؒ 1 ඵ ) εϧʔϓοτ (1 ඵؒ͋ͨΓͷॲཧ׬ྃ਺ )

Slide 82

Slide 82 text

Copyright © 2007 Sun Microsystems K.K. 82 JMeter ͰεϧʔϓοτΛܭଌ͢Δ • ৄ͘͠͸ ... > http://blogs.sun.com/okazaki/entry/sdc_performance_tuning_seminar > http://blogs.sun.com/okazaki/entry/throughput_analysis_2 > http://blogs.sun.com/okazaki/entry/throughput_analysis_3

Slide 83

Slide 83 text

Copyright © 2007 Sun Microsystems K.K. 83 DTraceΛ࢖͏ • ϗϫΠτϖʔύʔΛࢀর > http://sdc.sun.co.jp/solaris/topics/hotspot.html

Slide 84

Slide 84 text

Copyright © 2007 Sun Microsystems K.K. 84 DTrace࢖༻ྫ #!/usr/sbin/dtrace -s dvm$1:::monitor-wait { self->my[tid, copyinstr(arg0)] = timestamp; } dvm$1:::monitor-waited { @my[tid, copyinstr(arg0)] = sum(timestamp – self->my[tid, copyinstr(arg0)]); } pid$1::exit:entry { printa(@my); exit(0); } • ΞϓϦέʔγϣϯαʔόͷ JDBC ίωΫγϣϯϓʔϧ ͷେ͖͞ͱ଴ͪ࣌ؒ

Slide 85

Slide 85 text

Copyright © 2007 Sun Microsystems K.K. 85 8 16 32 64 128 0 2000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000 14000 15000 0 20 40 60 80 100 Size of conn. pool Latency (µs) Occupation time (ms) DTraceͰ AppServer ΛϓϩϑΝΠϧ • ࣗ෼ͷཉ͍͠৘ใΛ๬Έ௨ΓʹऔಘՄೳ • γεςϜύϑΥʔϚϯεʹେ͖ͳӨڹΛ༩͑ͳ͍ > DTrace ࣗ਎͕աෛՙͳϓϩϑΝΠϧΛࣗಈఀࢭ

Slide 86

Slide 86 text

Copyright © 2007 Sun Microsystems K.K. 86 υϦϧ̑ɿ·ͱΊ •౷ܭ৘ใΛ্खʹ׆༻͢Δ •πʔϧΛ׆༻͢Δ •νϡʔχϯά໨ඪΛΫϦΞʹ͢Δ

Slide 87

Slide 87 text

Copyright © 2007 Sun Microsystems K.K. 87 υϦϧ 6: l ਓؒ͸࣌ؒతͳϓϨογϟʔΛ  ͍͔ʹ͔͚ΒΕͯ΋ɺ  ଎͘͸ߟ͑ΒΕͳ͍z Ϧελʔͷ๏ଇ

Slide 88

Slide 88 text

Copyright © 2007 Sun Microsystems K.K. 88 ଎͘౴͑Λग़͢ͷʹॏཁͳࣄ ೴τϨͰ஁͑Δ ࿅श΍४උΛͨ͘͞Μ͓ͯ͘͠ ίϯϐϡʔλʹ΍ΒͤΔ ଞਓʹ೚ͤΔ ௒ೳྗͰ࣌ؒΛΏͬ͘Γਐ·ͤΔ

Slide 89

Slide 89 text

Copyright © 2007 Sun Microsystems K.K. 89 ߟ͑Δ࣌ؒ ࣮࡞ۀͷ࣌ؒ ࣄલʹ४උΛ͓ͯ͘͠ ίϯϐϡʔλʹ΍ΒͤΔ ଞਓʹ೚ͤΔ ڠྗΛ͓͙͋ Կ΋޻෉͍ͯ͠ͳ͍ͱ͖

Slide 90

Slide 90 text

Copyright © 2007 Sun Microsystems K.K. 90 ࣄલʹ४උΛ͓ͯ͘͠ • πʔϧͷ࢖͍ํ΍ػೳ੍ݶΛ͓֮͑ͯ͘ > ࣮ࡍʹ࢖ͬͯΈΔࣄ͕େࣄ • ৘ใΛࣄલʹखʹೖΕ͓ͯ͘ > ೔ʑͷ৘ใऩू > աڈࣄྫͷௐࠪ > ৽ٕज़ಈ޲ͷ௥੻

Slide 91

Slide 91 text

Copyright © 2007 Sun Microsystems K.K. 91 ࣄલͷ४උ • ࢓ࣄ͕Ұஈམͨ͠Β৘ใΛ੔ཧ > Wiki ɺϝʔϧɺϦϯΫूͷ੔ཧ > ݕࡧՄೳ͔ͭɺ࿈૝Մೳͳঢ়ଶʹ੔ཧ͓ͯ͘͠ࣄ͕େࣄ \\ Ұஈམͨ͠ظؒΛ ༗ޮ׆༻ ࢓ࣄͷෛՙ

Slide 92

Slide 92 text

Copyright © 2007 Sun Microsystems K.K. 92 ࣄલͷ४උ: Ԭ࡚ͷ৔߹ • ϒϩάΛಡΉ > RSS ͨ͘͞Μ (30 αΠτఔ౓ ) > 100~200 ΤϯτϦ / ೔ > ͳΔ΂ࣗ͘෼΋ϒϩάʹ࢒͢ • ϝʔϧΛಡΉ > ϝʔϦϯάϦετͨ͘͞Μ (100 ఔ౓ ) > 200~300 ௨ / ೔ > ͳΔ΂͘ࢀՃ͢Δ த਎·Ͱ͔ͬ͠ΓಡΉ ͷ͸ 2 ׂఔ౓ ࠷େ 500 ΤϯτϦ / ೔ ͕ݶ౓

Slide 93

Slide 93 text

Copyright © 2007 Sun Microsystems K.K. 93 ஌Βͳ͍ٕज़͕࢖ΘΕ͍ͯͨΒ 1. Google ʹ͖͍ͯΈΔ αϙʔτ֎ͱݴͬͯަব ஌͔ͬͨͿΓ ຊ԰ʹμογϡ ஌Βͳ͍ࣄͳΜͯແ͍ पΓͷਓʹฉ͖·͘Δ

Slide 94

Slide 94 text

Copyright © 2007 Sun Microsystems K.K. 94 पΓͷਓʹฉ͖·͘Δ • τϥϒϧ࣌ͷΑ͏ʹٸ͗ͷ৔߹͸Α͘஌͍ͬͯΔਓʹ ฉ͘ͷ͕ϕετ • ৄ͍͠ਓ͕਎ͷपΓʹ͍ͳͯ͘΋ɺ IT Λ׆༻͢Δ > ϒϩά > ܝࣔ൘΍αϙʔτϑΥʔϥϜ > ϝʔϦϯάϦετ

Slide 95

Slide 95 text

Copyright © 2007 Sun Microsystems K.K. 95 ຊ԰ʹμογϡ • ଟগ৘ใ͕ݹͯ͘΋ɺ৘ใ͕·ͱ·͍ͬͯΔࣄ͕ଟ ͍ • ΦϯϥΠϯͰຊ͕ಡΊΔ༗ྉαʔϏε΋ݕ౼

Slide 96

Slide 96 text

Copyright © 2007 Sun Microsystems K.K. 96 l Ͱ͖·ͤΜzγϯυϩʔϜ • ͳ͔ͥzͰ͖·ͤΜzͱ͍͏ճ౴͚ͩ͸ଈ౴ • ͳͥͰ͖ͳ͍ͷ͔ ? > Կ͕͋ͬͨΒͰ͖Δͷ͔ɺΛߟ͑Δ > ྫɿ࣌ؒɺ༧ࢉɺؾྗɺ੍໿͕؇࿨͞ΕΔ • ๩͍͔͠ΒͰ͖ͳ͍ > ༏ઌ౓͕௿͍͔ΒͰ͖ͳ͍ɺͱݴ͍׵͑Մೳ

Slide 97

Slide 97 text

Copyright © 2007 Sun Microsystems K.K. 97 υϦϧ̒ɿ·ͱΊ •τϥϒϧ࣌ʹ͸ࣄલͷ४උ͕େ͖ͳ खॿ͚ʹͳΔ •IT Λ͏·͘࢖ͬͯ࿑ྗΛܰݮ͢Δ

Slide 98

Slide 98 text

Copyright © 2007 Sun Microsystems K.K. 98 ͋Γ͕ͱ͏͍͟͝·ͨ͠

Slide 99

Slide 99 text

Copyright © 2007 Sun Microsystems K.K. 99 ࢀߟࢿྉ • ϒϩά > http://blogs.sun.com/okazaki • πʔϧؔ܎ > http://ja.netbeans.org > http://pmd.sourceforge.net > http://checkstyle.sourceforge.net > http://findbugs.sourceforge.net > http://www.opensolaris.org/os/project/opengrok • ͦͷଞ > http://sdc.sun.co.jp

Slide 100

Slide 100 text

Takayuki Okazaki [email protected] http://blogs.sun.com/okazaki ̎࣌ؒूத JavaTM τϥϒϧղܾυϦϧ