This session introduces org.ObjectLayout and StructuredArray, a new Java collection library and an array class designed specifically to enable JVMs to optimize memory layout for arrays of objects in a way that closely matches the performance behaviours of arrays of structs in C. org.ObjectLayout works on any JDK (version 6.0 and above), but when “intrinsified” in newer JDKs, it brings dead-reckoning and streaming speed to what is in essence an array of Java objects.
The presentation covers the APIs and design considerations behind them and explains the fundamentals behind logic that can allow Java JDKs to match C on data structure access speeds.
Presentation: Azul Systems Case Study Time: Tuesday 17:10 – 18:20 Location: Room 4
Training: Understanding Latency & Application Responsiveness: Characterization and specific considerations in Java environments Time: Thursday 09:00 – 16:00 Location: Gleacher Center 1
Managing, monitoring, and improving application responsiveness is a common need for many software professionals. Whether you develop Java applications or manage them, understanding application responsiveness and the major mechanisms that affect it is key to achieving successful applications and happy users. In this workshop, Gil Tene (CTO, Azul Systems) will provide a an in-depth overview of Latency and Response Time Characterization, including proven methodologies for measuring, reporting, and investigating latencies, and and overview of some common pitfalls encountered (far too often) in the field. While most of this discussion will apply to all application environments, some specific considerations in Java based environments will be covered as part of this workshop.
Our discussion will include an exploration of of the common needs and motivations for understanding the behavior of application response time and latency, and ways to successfully capture these descriptions and relate them to business needs. However, even good characterization of bad data is useless. If measurements of response time present false or misleading latency information, even the best analysis can lead to wrong operational decisions and poor application experience. Gil will demonstrate and discusses some common pitfalls, false assumptions and problematic measurement techniques that lead to dramatically incorrect reporting results, and will explain how these false measurements naturally occur using the most common measurement methods and tools in use today. We will discuss the coordinated data omission problem, and ways to work around it, and will introduce and demonstrate how simple and recently open sourced tools can be used to improve and gain higher confidence in both latency measurement and reporting.
Since Garbage Collection is an integral part of application behavior on Java platforms, and is often dominantly responsible for application responsiveness and latency behavior. As such, it is critically important for Java developers and application managers to understand the basic workings of garbage collectors so that they can better gauge application architecture choices and the actions they can take in selecting and tuning collector mechanisms. Gil will review and classify the various garbage collectors and collection techniques available in JVMs today, and provide an overview of common garbage collection techniques including generational, parallel, stop-the-world, incremental, concurrent and mostly-concurrent algorithms. We will define terms and metrics common to all collectors, and classify each major JVM collector’s mechanisms and characteristics and discuss the tradeoffs involved in balancing requirements for responsiveness, throughput, space, and available memory across varying scale levels. We will include an interactive discussion of how these tradeoffs play off in the real world, and discuss ways to minimize or completely eliminate application responsiveness and latency impacts from Garbage Collection.