Saturday, September 25, 2010

2010-09-25 Saturday - Java Performance Tuning

I'm doing some micro-benchmarking this weekend on various tuning techniques for a major distributed Java EE 6 application.  This posting is a collection of interesting resources that I've come across:


Troubleshooting...

Chuk-Munn Lee of Sun Microsystems Troubleshoots Java SE 6 Deployment
http://java.sun.com/developer/technicalArticles/javase/troubleshoot/


Performance Tuning and JVM Parameters...

Java SE Performance at a Glance  [new portal for Java Performance information]
http://www.oracle.com/technetwork/java/javase/tech/performance-jsp-141338.html

Java Performance Documentation
http://www.oracle.com/technetwork/java/performance-138178.html

A Collection of JVM Options (compiled by Joseph D. Mocker)
http://blogs.sun.com/watt/resource/jvm-options-list.html

Java HotSpot VM Options
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

G1: Java's Garbage First Garbage Collector
http://www.drdobbs.com/java/219401061;jsessionid=JA2FP4T4VEQ23QE1GHPCKHWATMY32JVN


Tooling...

Eclipse Memory Analyzer (MAT)
http://www.eclipse.org/mat/

jps - Java Virtual Machine Process Status Tool
http://download.oracle.com/javase/6/docs/technotes/tools/share/jps.html

 
HAT -- The Java Heap Analysis Tool, Bill Foote
(note: JHAT has replaced HAT)
https://hat.dev.java.net/doc/README.html


Tools: Use HProf For Quick and Dirty Profiling Assistance
http://www.javalobby.org/java/forums/t19612.html
 
NetBeans > Profiler
(The profiler is included in all Java distributions of the IDE)
http://profiler.netbeans.org/

NetBeans > Profiler > HeapWalker
http://profiler.netbeans.org/docs/help/6.0/heapwalker.html

  
VisualVM
https://visualvm.dev.java.net/
"VisualVM is a visual tool integrating several commandline JDK tools and lightweight profiling capabilities. Designed for both production and development time use, it further enhances the capability of monitoring and performance analysis for the Java SE platform."

"VisualVM is available in two distributions: VisualVM available at visualvm.dev.java.net and Java VisualVM available as a JDK tool in Oracle/Sun JDK distributions starting from JDK 6 update 7 and Apple's Java for Mac OS X 10.5 Update 4"
https://visualvm.dev.java.net/docindex.html

https://visualvm.dev.java.net/gettingstarted.html


http://www.yourkit.com/docs/

Documentation > Java Profiler 9.0 > Help > Memory profiling > Support of HPROF format snapshots
http://www.yourkit.com/docs/90/help/hprof_snapshots.jsp

http://www.yourkit.com/docs/90/help/

Documentation > Java Profiler 9.0 > Help > Memory profiling > Support of HPROF format snapshots
http://www.yourkit.com/docs/90/help/hprof_snapshots.jsp

Benchmarking...

Caliper is Google's open-source framework for writing, running and viewing the results of JavaMicrobenchmarks.
http://code.google.com/p/caliper/

Project Dalvik
Code and documentation from Android's VM team
Google Android Benchmarks
http://code.google.com/p/dalvik/source/browse/#svn/trunk/benchmarks


Application Design...


Caching...
http://www.redhat.com/promo/summit/2010/presentations/jbossworld/developer-insights-ii/thurs/sambati-310-caching/HowToStopWorryingAndStartCachingInJava-Final.pdf


The Google Collections Library
http://www.developer.com/open/article.php/3735441/The-Google-Collections-Library.htm


The Final Performance Testing Example, by Bruce Eckel
http://www.artima.com/weblogs/viewpost.jsp?thread=122295

Adroid Developers > Designing for Performance
http://developer.android.com/guide/practices/design/performance.html


Chameleon: Adaptive Selection of Collections
Ohad Shacham, Tel Aviv University
Martin Vechev, IBM Research
Eran Yahav, IBM Research
http://researchweb.watson.ibm.com/people/e/eyahav/papers/pldi09.pdf

References...

The JavaTM Virtual Machine Specification, Second Edition
http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html




No comments: