Have you ever wondered what happens to your code when it is being executed on the JVM. Is the code executed even resembles your original code? What happens past the JVM? What does kernel do? What actually runs on the CPU? How modern hardware affects things? Let’s figure it out together.
After the transformation from Java source through bytecode and machine code to microcode, and the various optimizations that take place along the way, the instructions that are actually executed may be very different from what you imagined when you wrote the program. This session shows you tools and techniques for tracing that path. You’ll see what a simple program actually looks like when it really hits the hardware.
Is it better to write “” + 42 or Integer.toString(42)? How much memory can you save if you intern() all of your strings? How can String Deduplication reduce your memory footprint and what does it cost? And how much memory will Java 9 Strings save in Estonian? What is the maximum length of a constant String? And a dynamic String? How much faster is new StringBuilder().append(“Hello “).append(name).toString() than “Hello “ + name? What are intrinsics and how do they relate to Strings? Are Strings really immutable? How can you efficiently create substrings? These and many more questions we will answer during this talk.