Book Image

Oracle JRockit: The Definitive Guide

Book Image

Oracle JRockit: The Definitive Guide

Overview of this book

Oracle JRockit is one of the industry’s highest performing Java Virtual Machines. Java developers are always on the lookout for better ways to analyze application behavior and gain performance. As we all know, this is not as easy as it looks. Welcome to JRockit: The Definitive Guide.This book helps you gain in-depth knowledge of Java from the JVM’s point of view. We will explain how to write code that works well with the JVM to gain performance and scalability. Starting with the inner workings of the JRockit JVM and finishing with a thorough walkthrough of the tools in the JRockit Mission Control suite, this book is for anyone who wants to know more about how the JVM executes your Java application and how to profile for better performance.
Table of Contents (23 chapters)
Oracle JRockit
Credits
Foreword
About the Authors
Acknowledgement
About the Reviewers
Preface
12
Using the JRockit Management APIs
Bibliography
Glossary
AST
CAS
HIR
IR
JFR
JMX
JRA
JSR
LIR
MD5
MIR
PDE
RCP
SWT
TLA
Index

Appendix A. Bibliography

Abuaiadh, Diab, Yoav Ossia, Erez Petrank, and Uri Silbershtein. An efficient parallel heap compaction algorithm. ACM SIGPLAN Notices, 2004.

Adamson, Alan, David Dagastine, and Stefan Särne. SPECjbb2005—A year in the life of a benchmark. 2007 SPEC Benchmark Workshop, SPEC, 2007.

Adl-Tabatabai, Ali-Reza, Richard L. Hudson, Mauricio J. Serrano, and Sreenivas Subramoney. Prefetch injection based on hardware monitoring and object metadata. ACM SIGPLAN Notices, 2004: 267-276.

Aho, Alfred, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 1986.

Allen, Randy, and Ken Kennedy. Optimizing Compilers for Modern Architectures: A Dependence-based Approach. 1st Edition. Morgan Kaufmann, 2001.

Alpern, B, et al. The Jalapeño virtual machine. IBM Systems Journal (IBM) 39, no. 1 (2000): 211-238.

AMD Corporation. AMD Virtualization. http://www.amd.com/us/products/technologies/virtualization/Pages/virtualization.aspx (accessed December 31, 2009).

Apple Corporation. Apple—Rosetta. http://www.apple.com/rosetta/ (accessed January 1, 2010).

Bacon, David F., Clement R. Attanasio, Han B. Lee, V.T. Rajan, and Stephen Smith. Java without the coffee breaks: a nonintrusive multiprocessor garbage collector. Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation, 2001: 92-103.

Bacon, David F., Perry Cheng, and V.T. Rajan. A real-time garbage collector with low overhead and consistent utilization. ACM SIGPLAN Notices, 2003: 285-298.

Bacon, David F., Ravi Konuru, Chet Murthy, and Mauricio Serrano. Thin locks: featherweight synchronization for Java. Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, 1998: 258-268.

Bacon, David, et al. The "Double-Checked Locking is Broken" Declaration. http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html (accessed December 31, 2009).

Barabash, Katherine, Yoav Ossia, and Erez Petrank. Mostly concurrent garbage collection revisited. Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, 2003: 255-268.

Bergamaschi, F, et al. The Java Community Process(SM) Program - JSR:s Java Specification Requests—detail JSR# 174. http://jcp.org/en/jsr/detail?id=174 (accessed January 1, 2010).

Blackburn, Stephen M., et al. The DaCapo benchmarks: Java benchmarking development and analysis. ACM SIGPLAN Notices, 2006: 169-190.

Blanchet, Bruno. Escape analysis for Java TM : Theory and practice. ACM Transactions on Programming Languages and Systems (TOPLAS), 2003: 713-775.

Bloch, Joshua. Effective Java. 2nd Edition. Prentice Hall, 2008.

Bodik, Rastislav, Rajiv Gupta, and Vivek Sarkar. ABCD: eliminating array bounds checks on demand. Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, 2000: 321-333.

Boehm, Hans-J., Alan J. Demers, and Scott Shenker. Mostly parallel garbage collection. ACM SIGPLAN Notices, 1991: 157-164.

Box, Don, and Chris Sells. Essential .NET, Volume I: The Common Language Runtime. Addison-Wesley Professional, 2002.

Chaitin, Gregory. Register allocation and spilling via graph coloring. ACM SIGPLAN Notices, 1982: 66-74.

Chaitin, Gregory J., Mark A. Auslander, K. Ashok Chandra, John Cocke, Martin E. Hopkins, and Peter W. Markstein. Register allocation via coloring. Computer Languages, 1981: 47-57.

Choi, Jong-Deok, Manish Gupta, Mauricio J. Serrano, Vugranam C. Sreedhar, and Samuel P. Midkiff. Stack allocation and synchronization optimizations for Java using escape analysis. ACM Transactions on Programming Languages and Systems (TOPLAS), 2003: 876-910.

Chynoweth, Michael, and Mary R. Lee. Implementing Scalable Atomic Locks for Multi-Core Intel ® EM64T and IA32 Architectures. Intel corporation. November 9, 2009. http://software.intel.com/en-us/articles/implementing-scalable-atomic-locks-for-multi-core-intel-em64t-and-ia32-architectures/ (accessed January 31, 2010).

Cooper, Keith, and Linda Torczon. Engineering a Compiler. 1st Edition. Morgan Kaufmann, 2003.

Cormen, Thomas H., Charles E. Leiserson, Ronald R. Rivest, and Clifford Stein. Introduction to Algorithms. McGraw-Hill, 2003.

Cox, J. Stan, Aaron Quirk, Derik Inglis, Nikoli Grcevski, and Piyush Agarwal. IBM ® WebSphere ® Application Server WAS V7 64-bit performance—Introducing WebSphere Compressed Reference Technology. IBM. IBM. November 14, 2008. ftp://public.dhe.ibm.com/software/webserver/appserv/was/WAS_V7_64-bit_performance.pdf (accessed January 31, 2010).

Cytron, Ron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman, and Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems (TOPLAS), 1991: 451-490.

The DaCapo Research Group. DaCapo Benchmarks Home Page. http://dacapobench.org/ (accessed January 1, 2010).

Dahlstedt, Joakim, and Peter Lönnebring. System and method for using native code interpretation to move threads to a safe state in a runtime environment. USA Patent 7,080,374. July 18, 2006.

Deneau, Tom. How JVMs use Escape Analysis to Improve Application Performance. AMD Corporation. 2008.http://developer.amd.com/documentation/articles/pages/01302008_jvm.aspx (accessed December 31, 2009).

Dibble, P, et al. The Java Community Process(SM) Program—JSRs: Java Specification Requests—detail JSR# 1. 2006. http://jcp.org/en/jsr/detail?id=1 (accessed December 31, 2009).

Dice, David. Biased Locking in HotSpot. August 18, 2006. http://blogs.sun.com/dave/entry/biased_locking_in_hotspot (accessed December 31, 2009).

Dice, David, Mark Moir, and William Scherer. Quickly Reacquirable Locks. 2006.

Domani, Tamar, Gal Goldshtein, Elliot K. Kolodner, Ethan Lewis, Erez Petrank, and Dafna Sheinwald. Thread-local heaps for Java. Proceedings of the 3rd international symposium on Memory management. Berlin, Germany: ACM, 2002. 76-87.

Eclipse. PDE. http://www.eclipse.org/pde/ (accessed April 20, 2010).

Fink, Stephen J., and Feng Qian. Design, implementation and evaluation of adaptive recompilation with on-stack replacement. ACM International Conference Proceeding Series, 2003: 241-252.

Goetz, Brian. Java theory and practice: Fixing the Java Memory Model, Part 1. http://www.ibm.com/developerworks/library/j-jtp03304/(accessed December 31, 2009).

Goetz, Brian, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea. Java Concurrency in Practice. Addison-Wesley, 2006.

Gosling, James, Bill Joy, Guy Steele, and Gilad Bracha. The Java TM Language Specification. 3rd Edition. Addison-Wesley, 2005.

Gough, John. Compiling for the .NET Common Language Runtime (CLR). Prentice Hall, 2001.

Grove, David. Ramblings on Object Models. January 11, 2006. http://moxie.sourceforge.net/meetings/20060111/grove-ngvm.pdf (accessed January 10, 2010).

von Hagen, William. The Definitive Guide to GCC. 2nd Edition. Apress, 2006.

Hirt, Marcus. Marcus Hirt's Oracle Blog. Oracle Corporation. http://blogs.oracle.com/hirt (accessed April 20, 2010).

Hirt, Marcus. Oracle JRockit Mission Control Overview. Oracle. 2008. http://www.oracle.com/technology/products/jrockit/pdf/missioncontrol_whitepaper_june08.pdf (accessed April 20, 2010).

Hyde, Paul. Java Thread Programming. 1st Edition. Sams, 1999.

Intel Corporation. ®Intel 64 and IA-32 Architecture Software Developer's Manuals. http://www.intel.com/products/processor/manuals/ (accessed January 1, 2010).

—Intel ® Itanium ® Processor Family - Technical Documents. http://www.intel.com/design/itanium/documentation.htm (accessed January 1, 2010).

—Intel(R) VTune—Intel ® Software Network. http://software.intel.com/en-us/intel-vtune/ (accessed January 1, 2010).

—Virtualization technologies from Intel. http://www.intel.com/technology/virtualization/ (accessed December 31, 2009).

Jones, Richard, and Rafael D. Lins. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. Wiley, 1996.

Kawahito, Motohiro, Hideaki Komatsu, and Toshio Nakatani. Effective sign extension elimination for Java. ACM Transactions on Programming Languages and Systems (TOPLAS), 2006: 106-133.

Kotzmann, Thomas, Christian Wimmer, Hanspeter Mössenböck, Thomas Rodriguez, Kenneth Russell, and David Cox. Design of the Java HotSpot™ client compiler for Java 6. ACM Transactions on Architecture and Code Optimization (TACO), 2008.

KVM. http://www.linux-kvm.org/page/Main_Page (accessed January 1, 2010).

Lagergren, Marcus. Experience Talk—"QA Infrastructure—Meeting commercial robustness criteria". January 11, 2006. http://moxie.sourceforge.net/meetings/20060111/lagergren-ngvm.pdf (accessed December 31, 2009).

Lagergren, Marcus. System and method for iterative code optimization using adaptive size metrics. USA Patent 7,610,580. 2009.

Lea, Doug. Concurrent Programming in Java TM : Design Principles and Patterns. 2nd Edition. Prentice Hall, 1999.

Lea, Doug. The JSR-133 Cookbook for Compiler Writers. 2008. http://g.oswego.edu/dl/jmm/cookbook.html (accessed December 31, 2009).

Lindholm, Tim, and Frank Yellin. The Java TM Virtual Machine Specification. 2nd Edition. Prentice Hall, 1999.

Low, Douglas. Java Control Flow Obfuscation. Master's Thesis, University of Auckland, Auckland, 1998.

Lueh, Guei-Yuan, Thomas Gross, and Ali-Reza Adl-Tabatabai. Fusion-based register allocation. ACM Transactions on Programming Languages and Systems (TOPLAS), 2000: 431-470.

Lueh, Guei-Yuan, Thomas Gross, and Ali-Reza Adl-Tabatabai. Global Register Allocation Based on Graph Fusion. Lecture Notes in Computer Science, 1996: 246-265.

Manson, Jeremy, and Brian Goetz. JSR 133 (Java Memory Model) FAQ. 2004. http://www.cs.umd.edu/users/pugh/java/memoryModel/jsr-133-faq.html (accessed December 31, 2009).

Manson, Jeremy, William Pugh, and Sarita V. Adve. The Java memory model. Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, 2005: 378-391.

Microsoft Corporation. Microsoft: Hyper-V Server Homepage. http://www.microsoft.com/hyper-v-server/ (accessed January 1, 2010).

Muchnick, Steven. Advanced Compiler Design and Implementation. 1st Edition. Morgan Kaufmann, 1997.

Nicholas, Ethan. Understanding Weak References | Java.net. http://weblogs.java.net/blog/2006/05/04/understanding-weak-references (accessed December 31, 2009).

Nolan, Godfrey. Decompiling Java. 1st Edition. Apress, 2004.

Oaks, Scott, and Henry Wong. Java Threads. 3rd Edition. O'Reilly, 2004.

Öhrström, Fredrik. Fredrik Öhrström's blog. Oracle Corporation. December 2009. http://blogs.oracle.com/ohrstrom/ (accessed December 31, 2009).

Oracle Corporation. Deterministic Garbage Collection: Unleash the Power of Java with Oracle JRockit Real Time. Oracle Corporation. 2008. http://www.oracle.com/appserver/docs/jrockit-deterministic-garbage-whitepaper.pdf.

Oracle JRockit. http://www.oracle.com/technology/products/jrockit/index.html (accessed December 31, 2009).

Oracle JRockit Webdocs. http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/webdocs/index.html (accessed December 31, 2009).

—Oracle VM | Oracle Virtualization. http://www.oracle.com/virtualization/ (accessed January 1, 2010).

Ossia, Yoav, Ori Ben-Yitzakh, Irit Goft, Elliot K. Kolodner, Victor Leikehman, and Avi Owshanko. A parallel, incremental and concurrent GC for servers. ACM SIGPLAN Notices, 2002: 129-140.

Österdahl, Henrik. A Thread-Local Heap Management System for a JVM using Read- and Write-Barriers. Master's Thesis, Stockholm, Sweden: Royal Institute of Technology, 2005.

Parallels. http://www.parallels.com (accessed February 20, 2010).

Printezis, Tony, and David Detlefs. A generational mostly-concurrent garbage collector. ACM SIGPLAN Notices, 2001: 143-154.

Pugh, William. The Java Memory Model. http://www.cs.umd.edu/~pugh/java/memoryModel/ (accessed December 31, 2009).

Pugh, W, et al. The Java Community Process(SM) Program—JSR:s Java Specification Requests—detail JSR# 133. 2004. http://jcp.org/en/jsr/detail?id=133 (accessed December 31, 2009).

Ravenbrook Corporation. The Memory Management Glossary. Ravenbrook. December 04, 2001. http://www.memorymanagement.org/glossary/ (accessed December 31, 2009).

Rivest, Ron R. RFC 1321 (rfc1321)—The MD5 Message-Digest Algorithm. 1992. http://www.faqs.org/rfcs/rfc1321.html (accessed December 31, 2009).

Rose, J, et al. The Java Community Process(SM) Program—JSR:s: Java Specification Requests—detail JSR# 292. 2009. http://jcp.org/en/jsr/detail?id=292 (accessed December 31, 2009).

Ruf, Erik. Effective Synchronization Removal for Java. ACM SIGPLAN Notices, 2000: 208-218.

Shiv, Kumar, Ravi Iyer, Chris Newburn, Joakim Dahlstedt, Marcus Lagergren, and Olof Lindholm. Impact of JIT/JVM Optimizations on Java Application Performance. Proceedings of the Seventh Workshop on Interaction between Compilers and Computer Architectures. ACM, 2003. 5.

Siegwart, David, and Martin Hirzel. Improving locality with parallel hierarchical copying GC. Proceedings of the 5th international symposium on Memory management. Ottawa, Ontario, CA: ACM, 2006. 52-63.

sipstone.org. SIP Stone—Benchmarking SIP Server Performance. http://www.sipstone.org (accessed January 1, 2010).

SPARC International. SPARC Architecture Manual Version 9. Edited by David L. Weaver and Tom Germond. Prentice Hall, 1993.

Spec Corporation. SPECjAppServer2004. http://www.spec.org/jAppServer2004/ (accessed January 1, 2010).

—SPECjbb2005. http://www.spec.org/jbb2005/ (accessed January 1, 2010).

—SPECjEnterprise2010. 2010. http://www.spec.org/jEnterprise2010 (accessed February 13, 2010).

—SPECjvm2008. http://www.spec.org/jvm2008 (accessed January 1, 2010).

Sun Microsystems. Java HotSpot Garbage Collection. http://java.sun.com/javase/technologies/hotspot/gc/g1_intro.jsp (accessed December 31, 2009).

Ubuntu Server Edition JeOS | Ubuntu. http://www.ubuntu.com/products/whatisubuntu/serveredition/jeos (accessed January 1, 2010).

Ungar, David. Generation Scavenging: A non-disruptive high performance storage reclamation algorithm. ACM SIGPLAN Notices, May 1984: 157-167.

VirtualBox. http://www.virtualbox.org/ (accessed January 1, 2010).

VMware corporation. http://www.vmware.com/ (accessed January 1, 2010).

Wikipedia. Double-checked locking—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Double-checked_locking (accessed December 31, 2009).

—JAD (JAva Decompiler)—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/JAD_(JAva_Decompiler) (accessed December 31, 2009).

—Just enough operating system—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Just_enough_operating_system (accessed January 1, 2010).

—Non-Uniform Memory Access—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access (accessed December 31, 2009).

—Page (computer memory)—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Huge_pages#Huge_pages (accessed January 1, 2010).

—Virtual memory—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Virtual_memory (accessed February 20, 2010).

—Virtualization—Wikipedia, the free encyclopedia. http://en.wikipedia.org/wiki/Virtualization (accessed January 1, 2010).

XenSource. http://www.xen.org/ (accessed January 1, 2010).

Zorn, Benjamin. Barrier Methods for Garbage Collection. University of Colorado at Boulder, 1990.