A JVM Does What?
Eva Andreasson
Product Manager, Azul Systems
Presenter
• Eva Andreasson – Innovator & Problem solver
─ Implemented the Deterministic GC of JRockit Real Time
─ Awarded ...
Agenda
•
•
•
•
•

What is a JVM?
What the JVM enables for Java

Compilers and optimization
Garbage collection and the pain...
What is a Java Virtual Machine (JVM)?
• Java
─ But these days JVMs can handle other dynamic languages too

(Scala, Groovy,...
What is a Java Virtual Machine (JVM)?
• A JVM described in a simple sentence
A software module that provides the same exec...
What is a Java Virtual Machine (JVM)?
• Key benefits of Java, enabled by the JVM
─ Portability
─ “Non-explicity”

• Other ...
What is a Java Virtual Machine (JVM)?
• Key benefits of Java, enabled by the JVM
─ Portability
─ “Non-explicity”

• Other ...
Portability
Write once, run everywhere
Same code!

Java
Application

JVM

JVM

Operating
System

Operating
System

Hardwar...
What Makes Portability Possible?
• javac – takes Java source code compiles it into bytecode
─ MyApp.java  MyApp.class

• ...
JVM Compilers
• Common concepts:
─ Hotspot detection, Re-compilation, and De-compilation

• Optimizations need resources
─...
Exploring JIT Compilation
Example 1: Dead Code Elimination

• Eliminates code that does not affect the program
• The compi...
Exploring JIT Compilation
Example 1: Dead Code Elimination

• Eliminates code that does not affect the program
• The compi...
Exploring JIT Compilation
Example 2: Inlining

int whenToEvaluateZing(int y) {
return daysLeft(y) + daysLeft(0) + daysLeft...
Exploring JIT Compilation
Example 2: Inlining

int whenToEvaluateZing(int y) {
int temp = 0;
if (y == 0) temp += 0; else t...
Exploring JIT Compilation
Example 2: Inlining

int whenToEvaluateZing(int y) {
if (y == 0) return y;
else if (y == -1) ret...
Exploring JIT Compilation
Example 2: Redundancy Removal

• Common situation after inlining:
─ Method “foo” inlined in mult...
Summary on Portability and Compilers
• Since the JVM Compiler does the “translation” and
optimization for you, you don’t n...
Break?

©2011 Azul Systems, Inc.

18
What is a Java Virtual Machine (JVM)?
• Key benefits of Java, enabled by the JVM
─ Portability
─ “Non-explicity”

• Other ...
What is a Java Virtual Machine (JVM)?
• Key benefits of Java, enabled by the JVM
─ Portability
─ “Non-explicity”

• Other ...
Non-Explicity

import java.io.*;
class ZingFan {
private String myName;
public ZingFan(String name){
myName = name;
}

Jus...
Garbage Collection
• Dynamic Memory Management – The perceived pain that
really comes with all the goodness

• Allocation ...
Allocation & Garbage Collection
• Java Heap (-Xmx)
• JVM Internal Memory
• Top: RES / RSS --- total memory footprint

Java...
Allocation & Garbage Collection
• Thread Local Allocation
Thread B

Object Foo

Java Heap
Thread Local Area B

Old
Object
...
Allocation & Garbage Collection
• Garbage Collection
Thread B

Java Heap

Old
Object

???

Object
NoFit

Reference

Object...
Garbage Collection
• Parallel Garbage Collection
─ Stop the world
Thread B

Object
NoFit

Reference

Java Heap

Old
Object...
Garbage Collection
• Parallel Garbage Collection
─ Stop the world
Thread B

Object
NoFit

Reference

Java Heap

Old
Object...
Garbage Collection
• Parallel Garbage Collection
─ Stop the world
Thread B

Object
NoFit

Reference

Java Heap

Old
Object...
Garbage Collection
• Parallel Garbage Collection
─ Stop the world
Thread B

Reference

Object
NoFit

Java Heap

Object Foo...
Garbage Collection
• Parallel Garbage Collection
─ Stop the world
Thread B

Reference

Object
NoFit

Java Heap

Object Foo...
Garbage Collection
• Parallel Garbage Collection
─ Stop the world
Thread B

Reference

Java Heap

Object
NoFit

Object Foo...
Garbage Collection
• Concurrent Garbage Collection
─ While application is running
Thread B

Object Foo

Java Heap

Old
Obj...
Garbage Collection
• Concurrent Garbage Collection
─ While application is running
Thread B

Java Heap

Old
Object

Object ...
Garbage Collection
• Concurrent Garbage Collection
─ While application is running
Thread B

Java Heap

Old
Object

Object ...
Garbage Collection
• Concurrent Garbage Collection
─ While application is running
Thread B

Java Heap

Old
Object

Object ...
Fragmentation
• When there is room on the heap
─ But not large enough…
─ Even after GC…
Thread B
???

Java Heap

Object
Ba...
Generational Garbage Collection
• Most objects die young…

Thread B

Object
NoFit

???

Java Heap

Object
Bar

Young Gener...
Generational Garbage Collection
• Most objects die young…

Thread B

Object
NoFit

???

Java Heap

Object
Bar

Young Gener...
Generational Garbage Collection
• Most objects die young…

Thread B

Object
NoFit

Java Heap

Older
Object

Young Generati...
Generational Garbage Collection
• Most objects die young…

Thread B

Java Heap

Object
NoFit

Young Generation
©2011 Azul ...
Generational Garbage Collection
• Promotion

???

Thread B

Object
YGCTrig

Java Heap

Object
NoFit
Young Generation

©201...
Generational Garbage Collection
• Promotion
•
•
???

Thread B

Less fragmented memory
Delays “worst case”

Object
YGCTrig
...
Generational Garbage Collection
• Promotion
•
•
Thread B

Less fragmented memory
Delays “worst case”

Object
YGCTrig

Java...
Generational Garbage Collection
• Promotion
•
•

Less fragmented memory
Delays “worst case”

Thread B

Java Heap

Object
Y...
Compaction
• Move objects together
─ To fit larger objects
─ Eliminate small un-useful memory gaps

???

Java Heap

Object...
Compaction
• Move objects together
─ To fit larger objects
─ Eliminate small un-useful memory gaps

Java Heap

Object
NoFi...
Compaction
• Move objects together
─ To fit larger objects
─ Eliminate small un-useful memory gaps

Java Heap

Object
NoFi...
Compaction
• Generational GC helps delay, but does not “solve”
fragmentation

• Compaction is inevitable
─ When moving obj...
Pain of Tuning
• -Xmx – hast to be set “right”
─ Exactly the amount you need for your worst case load
─ Too much – waste o...
Biggest Java Scalability Limitation
• For MOST JVMs, compaction pauses are the biggest
current challenge and key limiting ...
2c for the Road
What to (not) Think About

1. Why not use multiple threads, when you can?
─

Number of cores per server co...
Summary
• JVM – a great abstraction, provides convenient services
so the Java programmer doesn’t have to deal with
environ...
For the Curious: What is Zing?
• Azul Systems has developed scalable Java platforms for
8+ years
─ Vega product line based...
Q&A

eva.andreasson@azulsystems.com
http://twitter.com/AzulSystemsPM
www.azulsystems.com/zing

©2011 Azul Systems, Inc.

5...
Additional Resources
• For more information on…
…JDK internals: http://openjdk.java.net/ (JVM source code)
…Memory managem...
Upcoming SlideShare
Loading in...5
×

What's Inside a JVM?

723

Published on

Learn what a Java Virtual Machine (JVM) is and what it does for your Java applications in this webinar. Eva Andreasson of Azul Systems provides insights into the inner workings of a Java Virtual Machine and some drill down on what compilers and garbage collectors do, so that you don’t have to worry about it while programming your Java application. In particular, you will learn about common optimizations, well established garbage collection algorithms, and what the current biggest challenge with Java scalability is today.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
723
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
62
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

What's Inside a JVM?

  1. 1. A JVM Does What? Eva Andreasson Product Manager, Azul Systems
  2. 2. Presenter • Eva Andreasson – Innovator & Problem solver ─ Implemented the Deterministic GC of JRockit Real Time ─ Awarded patents on GC heuristics and self-learning algorithms ─ Most recent: Product Manager for Azul Systems’ scalable Java Platform Zing • I like new ideas and brave thinking! ©2011 Azul Systems, Inc. 2
  3. 3. Agenda • • • • • What is a JVM? What the JVM enables for Java Compilers and optimization Garbage collection and the pain of fragmentation What to (not) think about ©2011 Azul Systems, Inc. 3
  4. 4. What is a Java Virtual Machine (JVM)? • Java ─ But these days JVMs can handle other dynamic languages too (Scala, Groovy, Clojure…) • Virtual ─ A great abstraction that allows programmers to focus on value- add elsewhere • Machine ─ Manages resources and instruction execution ©2011 Azul Systems, Inc. 4
  5. 5. What is a Java Virtual Machine (JVM)? • A JVM described in a simple sentence A software module that provides the same execution environment to all Java applications, and takes care of the “translation” to the underlying layers with regards to execution of instructions and resource management. ©2011 Azul Systems, Inc. 5
  6. 6. What is a Java Virtual Machine (JVM)? • Key benefits of Java, enabled by the JVM ─ Portability ─ “Non-explicity” • Other error-preventing and convenient services of the JVM ─ ─ ─ ─ ─ ─ ─ ─ Consistent Thread Model Optimizes and Manages Locking Enforces Type Safety Dynamic Code Loading Quick high-quality Time Access (e.g. currentTimeMillis, nanoTime) Internal introspection Access to huge pre-built library Access to OS and environmental information ©2011 Azul Systems, Inc. 6
  7. 7. What is a Java Virtual Machine (JVM)? • Key benefits of Java, enabled by the JVM ─ Portability ─ “Non-explicity” • Other error-preventing and convenient services of the JVM ─ ─ ─ ─ ─ ─ ─ ─ Consistent Thread Model Optimizes and Manages Locking Enforces Type Safety Dynamic Code Loading Quick high-quality Time Access (e.g. currentTimeMillis, nanoTime) Internal introspection Access to huge pre-built library Access to OS and environmental information ©2011 Azul Systems, Inc. 7
  8. 8. Portability Write once, run everywhere Same code! Java Application JVM JVM Operating System Operating System Hardware Architecture ©2011 Azul Systems, Inc. Java Application Hardware Architecture 8
  9. 9. What Makes Portability Possible? • javac – takes Java source code compiles it into bytecode ─ MyApp.java  MyApp.class • Bytecode can be “translated” by JVMs into HW instructions ─ Anywhere the JVM runs… • Two paths of “translation” ─ Interpretation ─ ─ The “dictionary” approach Look up instruction, execute ─ Compilation (JIT) ─ ─ ©2011 Azul Systems, Inc. The “intelligent translator” Profile, analyze, execute faster 9
  10. 10. JVM Compilers • Common concepts: ─ Hotspot detection, Re-compilation, and De-compilation • Optimizations need resources ─ Temporary “JVM memory” ─ “Compiler threads” ─ Cost is covered by the faster execution time • Different compilers for different needs ─ Client (“C1”), quicker compilation time, less optimized code ─ Server (“C2”), slower compilation time, more optimized code ─ Tiered, both C1 and C2 ─ C1’s profiling used for C2’s compilation ©2011 Azul Systems, Inc. 10
  11. 11. Exploring JIT Compilation Example 1: Dead Code Elimination • Eliminates code that does not affect the program • The compiler finds the “dead” code and eliminates the instruction set for it ─ Reduces the program size ─ Prevents irrelevant operations to occupy time in the CPU • Example: int timeToScaleMyApp(boolean endlessOfResources) { int reArchitect = 24; int patchByClustering = 15; int useZing = 2; if (endlessOfResources) return reArchitect + useZing; else return useZing; } ©2011 Azul Systems, Inc. 11
  12. 12. Exploring JIT Compilation Example 1: Dead Code Elimination • Eliminates code that does not affect the program • The compiler finds the “dead” code and eliminates the instruction set for it ─ Reduces the program size ─ Prevents irrelevant operations to occupy time in the CPU • Example: int timeToScaleMyApp(boolean endlessOfResources) { int reArchitect = 24; int useZing = 2; if (endlessOfResources) return reArchitect + useZing; else return useZing; } ©2011 Azul Systems, Inc. 12
  13. 13. Exploring JIT Compilation Example 2: Inlining int whenToEvaluateZing(int y) { return daysLeft(y) + daysLeft(0) + daysLeft(y+1); } int daysLeft(int x) { if (x == 0) return 0; Each method call takes time, and causes extra jump instructions to be executed ©2011 Azul Systems, Inc. else return x - 1; } 13
  14. 14. Exploring JIT Compilation Example 2: Inlining int whenToEvaluateZing(int y) { int temp = 0; if (y == 0) temp += 0; else temp += y - 1; if (0 == 0) temp += 0; else temp += 0 - 1; if (y+1 == 0) temp += 0; else temp += (y + 1) - 1; return temp; } Eliminating multiple method calls by inlining the method itself, speeds up the execution ©2011 Azul Systems, Inc. 14
  15. 15. Exploring JIT Compilation Example 2: Inlining int whenToEvaluateZing(int y) { if (y == 0) return y; else if (y == -1) return y - 1; else return y + y - 1; } Further optimizations can often be applied to speed up even more…. ©2011 Azul Systems, Inc. 15
  16. 16. Exploring JIT Compilation Example 2: Redundancy Removal • Common situation after inlining: ─ Method “foo” inlined in multiple places ─ Could lead to execution of the same tasks multiple times ─ ─ ─ Assignment of values to variables Additions or other operations Other… ─ Optimize to only have to do the redundant instructions once • Elimination of redundancy speeds up the code execution ©2011 Azul Systems, Inc. 16
  17. 17. Summary on Portability and Compilers • Since the JVM Compiler does the “translation” and optimization for you, you don’t need to think about: ─ Different HW instruction sets ─ How to write your methods in a more instruction friendly way ─ How calls to other methods may impact execution performance • Unless you want to?  ©2011 Azul Systems, Inc. 17
  18. 18. Break? ©2011 Azul Systems, Inc. 18
  19. 19. What is a Java Virtual Machine (JVM)? • Key benefits of Java, enabled by the JVM ─ Portability ─ “Non-explicity” • Other error-preventing and convenient services of the JVM ─ ─ ─ ─ ─ ─ ─ ─ Consistent Thread Model Optimizes and Manages Locking Enforces Type Safety Dynamic Code Loading Quick high-quality Time Access (e.g. currentTimeMillis, nanoTime) Internal introspection services Access to huge pre-built library Access to OS and environmental information ©2011 Azul Systems, Inc. 19
  20. 20. What is a Java Virtual Machine (JVM)? • Key benefits of Java, enabled by the JVM ─ Portability ─ “Non-explicity” • Other error-preventing and convenient services of the JVM ─ ─ ─ ─ ─ ─ ─ ─ Consistent Thread Model Optimizes and Manages Locking Enforces Type Safety Dynamic Code Loading Quick high-quality Time Access (e.g. currentTimeMillis, nanoTime) Internal introspection services Access to huge pre-built library Access to OS and environmental information ©2011 Azul Systems, Inc. 20
  21. 21. Non-Explicity import java.io.*; class ZingFan { private String myName; public ZingFan(String name){ myName = name; } Just type “new” to get the memory you need public String getName() { return myName; } public static void main (String args[ ]){ ZingFan me = new ZingFan("Eva"); System.out.println(me.getName()); } No need to track or free used memory! } ©2011 Azul Systems, Inc. 21
  22. 22. Garbage Collection • Dynamic Memory Management – The perceived pain that really comes with all the goodness • Allocation and Garbage Collection ─ Parallel ─ Concurrent ─ Generational ─ Fragmentation and Compaction ─ The torture of tuning most JVMs ©2011 Azul Systems, Inc. 22
  23. 23. Allocation & Garbage Collection • Java Heap (-Xmx) • JVM Internal Memory • Top: RES / RSS --- total memory footprint Java Heap • Where all Java Objects are allocated JVM Internal Memory • • • • ©2011 Azul Systems, Inc. Code Cache VM threads VM Structs GC Memory 23
  24. 24. Allocation & Garbage Collection • Thread Local Allocation Thread B Object Foo Java Heap Thread Local Area B Old Object Thread Local Area A Old Object Thread A ©2011 Azul Systems, Inc. Object Bar 24
  25. 25. Allocation & Garbage Collection • Garbage Collection Thread B Java Heap Old Object ??? Object NoFit Reference Object Foo Object Bar Old Object Thread A ©2011 Azul Systems, Inc. 25
  26. 26. Garbage Collection • Parallel Garbage Collection ─ Stop the world Thread B Object NoFit Reference Java Heap Old Object Object Foo Object Bar Old Object GC Thread ©2011 Azul Systems, Inc. 26
  27. 27. Garbage Collection • Parallel Garbage Collection ─ Stop the world Thread B Object NoFit Reference Java Heap Old Object Object Foo Object Bar Old Object GC Thread ©2011 Azul Systems, Inc. 27
  28. 28. Garbage Collection • Parallel Garbage Collection ─ Stop the world Thread B Object NoFit Reference Java Heap Old Object Object Foo Object Bar Old Object GC Thread ©2011 Azul Systems, Inc. 28
  29. 29. Garbage Collection • Parallel Garbage Collection ─ Stop the world Thread B Reference Object NoFit Java Heap Object Foo Object Bar GC Thread ©2011 Azul Systems, Inc. 29
  30. 30. Garbage Collection • Parallel Garbage Collection ─ Stop the world Thread B Reference Object NoFit Java Heap Object Foo Object Bar Thread A ©2011 Azul Systems, Inc. 30
  31. 31. Garbage Collection • Parallel Garbage Collection ─ Stop the world Thread B Reference Java Heap Object NoFit Object Foo Object Bar Thread A ©2011 Azul Systems, Inc. 31
  32. 32. Garbage Collection • Concurrent Garbage Collection ─ While application is running Thread B Object Foo Java Heap Old Object Object Bar Old Object Reference GC Thread ©2011 Azul Systems, Inc. 32
  33. 33. Garbage Collection • Concurrent Garbage Collection ─ While application is running Thread B Java Heap Old Object Object Foo Object Bar Old Object Reference GC Thread ©2011 Azul Systems, Inc. 33
  34. 34. Garbage Collection • Concurrent Garbage Collection ─ While application is running Thread B Java Heap Old Object Object Foo Object Bar Old Object Reference GC Thread ©2011 Azul Systems, Inc. 34
  35. 35. Garbage Collection • Concurrent Garbage Collection ─ While application is running Thread B Java Heap Old Object Object Foo Object Bar Reference GC Thread ©2011 Azul Systems, Inc. 35
  36. 36. Fragmentation • When there is room on the heap ─ But not large enough… ─ Even after GC… Thread B ??? Java Heap Object Bar ©2011 Azul Systems, Inc. Object Foo Object NoFit Older Object 36
  37. 37. Generational Garbage Collection • Most objects die young… Thread B Object NoFit ??? Java Heap Object Bar Young Generation ©2011 Azul Systems, Inc. Older Object Object Foo Old Generation 37
  38. 38. Generational Garbage Collection • Most objects die young… Thread B Object NoFit ??? Java Heap Object Bar Young Generation ©2011 Azul Systems, Inc. Object Foo Older Object Old Generation 38
  39. 39. Generational Garbage Collection • Most objects die young… Thread B Object NoFit Java Heap Older Object Young Generation ©2011 Azul Systems, Inc. Old Generation 39
  40. 40. Generational Garbage Collection • Most objects die young… Thread B Java Heap Object NoFit Young Generation ©2011 Azul Systems, Inc. Older Object Old Generation 40
  41. 41. Generational Garbage Collection • Promotion ??? Thread B Object YGCTrig Java Heap Object NoFit Young Generation ©2011 Azul Systems, Inc. Many Young Objects Older Object Old Generation 41
  42. 42. Generational Garbage Collection • Promotion • • ??? Thread B Less fragmented memory Delays “worst case” Object YGCTrig Java Heap Many Young Objects Young Generation ©2011 Azul Systems, Inc. Older Object Object NoFit Old Generation 42
  43. 43. Generational Garbage Collection • Promotion • • Thread B Less fragmented memory Delays “worst case” Object YGCTrig Java Heap Older Object Young Generation ©2011 Azul Systems, Inc. Object NoFit Old Generation 43
  44. 44. Generational Garbage Collection • Promotion • • Less fragmented memory Delays “worst case” Thread B Java Heap Object YGCTrig Young Generation ©2011 Azul Systems, Inc. Older Object Object NoFit Old Generation 44
  45. 45. Compaction • Move objects together ─ To fit larger objects ─ Eliminate small un-useful memory gaps ??? Java Heap Object NoFit Young Generation ©2011 Azul Systems, Inc. Object Bar Object Foo Older Object Old Generation 45
  46. 46. Compaction • Move objects together ─ To fit larger objects ─ Eliminate small un-useful memory gaps Java Heap Object NoFit Young Generation ©2011 Azul Systems, Inc. Object Bar Object Foo Older Object Old Generation 46
  47. 47. Compaction • Move objects together ─ To fit larger objects ─ Eliminate small un-useful memory gaps Java Heap Object NoFit Young Generation ©2011 Azul Systems, Inc. Object Bar Object Foo Older Object Old Generation 47
  48. 48. Compaction • Generational GC helps delay, but does not “solve” fragmentation • Compaction is inevitable ─ When moving objects, you need to update references ─ Most JVMs have to stop the world as part of compaction • Many approaches to shorten compaction impact ─ ─ ─ ─ Partitioned compaction Time controlled compaction “Best result” calculations on what areas to compact Reference counting ©2011 Azul Systems, Inc. 48
  49. 49. Pain of Tuning • -Xmx – hast to be set “right” ─ Exactly the amount you need for your worst case load ─ Too much – waste of resources ─ Too little – OutOfMemoryError ─ Unpredictable loads and missconfiguration cause a lot of down- time • Example of production-tuned CMS: ©2011 Azul Systems, Inc. 49
  50. 50. Biggest Java Scalability Limitation • For MOST JVMs, compaction pauses are the biggest current challenge and key limiting factor to Java scalability • The larger heap and live data / references to follow, the bigger challenge for compaction • Today: most JVMs limited to 3-4GB ─ ─ ─ ─ To keep “FullGC” pause times within SLAs Design limitations to make applications survive in 4GB chunks Horizontal scale out / clustering solutions In spite of machine memory increasing over the years…  This is why I find Zing so interesting, as it has implemented concurrent compaction… ─ But that is not the topic of this presentation…  ©2011 Azul Systems, Inc. 50
  51. 51. 2c for the Road What to (not) Think About 1. Why not use multiple threads, when you can? ─ Number of cores per server continues to grow… 2. Don’t be afraid of garbage, it is good! 3. I personally don’t like finalizers…error prone, not guaranteed to run (resource wasting) 4. Always be careful around locking ─ If it passes testing, hot locks can still block during production load 5. Benchmarks are often focused on throughput, but miss out on real GC impact – test your real application! ─ ─ “Full GC” never occurs during the run, not running long enough to see impact of fragmentation Response time std dev and outliers (99.9…%) are of importance for a real world app, not throughput alone!! ©2011 Azul Systems, Inc. 51
  52. 52. Summary • JVM – a great abstraction, provides convenient services so the Java programmer doesn’t have to deal with environment specific things • Compiler – “intelligent and context-aware translator” who helps speed up your application • Garbage Collector – simplifies memory management, different flavors for different needs • Compaction – an inevitable task, which impact grows with live size and data complexity for most JVMs, and the current largest limiter of Java Scalability ©2011 Azul Systems, Inc. 52
  53. 53. For the Curious: What is Zing? • Azul Systems has developed scalable Java platforms for 8+ years ─ Vega product line based on proprietary chip architecture, kernel enhancements, and JVM innovation ─ Zing product line based on x86 chip architecture, virtualization and kernel enhancements, and JVM innovation • Most famous for our Generational Pauseless Garbage Collector, which performs fully concurrent compaction ©2011 Azul Systems, Inc. 53
  54. 54. Q&A eva.andreasson@azulsystems.com http://twitter.com/AzulSystemsPM www.azulsystems.com/zing ©2011 Azul Systems, Inc. 54
  55. 55. Additional Resources • For more information on… …JDK internals: http://openjdk.java.net/ (JVM source code) …Memory management: http://java.sun.com/j2se/reference/whitepapers/memorymanagement_w hitepaper.pdf (a bit old, but very comprehensive) …Tuning: http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/genin fo/diagnos/tune_stable_perf.html (watch out for increased rigidity and re-tuning pain) …Generational Pauseless Garbage Collection: http://www.azulsystems.com/webinar/pauseless-gc (webinar by Gil Tene, 2011) …Compiler internals and optimizations: http://www.azulsystems.com/blogs/cliff (Dr Cliff Click’s blog) ©2011 Azul Systems, Inc. 55
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×