![Page 1: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/1.jpg)
![Page 2: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/2.jpg)
Who Is This Guy? Will Iverson
[email protected] Check www.nukio.com for LinkedIn, Twitter, etc.
Java since 1995 Pascal/C/C++ before that… Apple, Symantec, Sun, BEA…
Four books on Java Hibernate, Web Services, Mac OS X Java, Jakarta Commons
Today: Architect, Consultant, Manager, Coach All Star Directories Nukio
![Page 3: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/3.jpg)
The Setup
IT has dead bodies
What happened… and next steps?
![Page 4: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/4.jpg)
Finding Bodies
Profiler?
Heap dumps
Thread dumps Stack traces
![Page 5: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/5.jpg)
Getting Heap Dumps
Built-‐in Executables (available in prod) java (VM flag, dump on OOM) jmap jconsole (JMX) jvisualvm
All profilers YourKit, NetBeans, Eclipse, JProbe Only available in dev
![Page 6: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/6.jpg)
Getting Thread Dumps
Built-‐in Executables (available in prod) jstack jconsole Jvisualvm
All profilers Only available in dev
![Page 7: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/7.jpg)
Beat Patrol
Get to know the neighborhood when nothing is going on… Heap Thread Dump Profilers (CPU)
![Page 8: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/8.jpg)
Cases
Memory Problem #1
Memory Problem #2
Thread Dump #1
Thread Dump #2
Thread Dump #3
Memory Problem #3
![Page 9: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/9.jpg)
What about Serial Killers?
Really unique, horrible things Strange deadlocks JVM bugs Driver bugs
Avoid Dark Alleys Don’t write threading code unless you need to…
…and you probably don’t need to. Tip: try an in memory database (HSQLDB or db40)
Stateless, parallel operations KISS
More in futures section
![Page 10: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/10.jpg)
Reconstructing Crimes
jstack
jmap (ha!)
Attach with Visual VM
Attach with jconsole
Use Profilers (skip jhat) Cheap, powerful
![Page 11: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/11.jpg)
Most Normal Web Apps Problem is with db/JVM interaction, not JVM
Solution? P6spy JDBC Driver Shim Records database interaction Review in Excel or with Iron tools
http://www.cascadetg.com/hibernate/
Fit to target Yes, I know your 1,000,000 TPS billing system required
instruction counting… and you wound up sending it out for an ASIC, etc etc etc…
![Page 12: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/12.jpg)
Tips
Single user on dev is a nice starting spot, but starve your resources. Allocate min to server. Should still be fast as all heck. Memory or CPU on a single page out of bounds = total
nightmare on server… think about all other requests coming in.
Know your targets Establish a baseline and a simple scorecard
Know your database All mainstream databases have great tools
![Page 13: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/13.jpg)
Finding the Future
Stateless Services e.g. Spring MVC, REST Avoid Sessions & Wizards
Shopping cart… that stays around forever?
Key/Value Datastores BigTable, MongoDB, Amazon S3 Easy: play with today for free using Google AppEngine
Enhance Your Platform Track CPU/Memory Usage for Page Views Response times + browser rendering
![Page 14: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/14.jpg)
Tip: Better to NOT find in Production
Solution: Solid Automated Tests, Good Perf Environment
“Can’t afford to automate” “Can’t afford to ship”
![Page 15: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/15.jpg)
Shameless Plug
Agile Testing CI, TDD Expert JUnit DBUnit, HTMLUnit, Selenium Automate documentation generation
March 25th – 26th
www.nukio.com
![Page 16: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/16.jpg)
![Page 17: Java Tools and Techniques for Solving Tricky Problem](https://reader036.vdocument.in/reader036/viewer/2022062307/555b3e56d8b42af36d8b4704/html5/thumbnails/17.jpg)