Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JVM Internals Demystified

981 views

Published on

JavaOne Latin America 2015 - talk

Published in: Technology
  • Be the first to comment

JVM Internals Demystified

  1. 1. ༼ つ ◕_◕ ༽つ JVM Internals ༼ つ ◕_◕ ༽つ Demystified! ( ͡° ͜ʖ ͡°) ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ
  2. 2. What we will NOT see here • Pure JVM boring theory • Assembly fear stuff • 0xFF • 0100111
  3. 3. What we will see here • Why internals? • Method Area • Heap • Threads • Further reading • Funny Gifs and images!
  4. 4. Hi! I’m Hanneli São Paulo, Brazil
  5. 5. No advanced stuff Simplified way Started learning Java for Web Apps Never had looked at JVM It was difficult to learn the internals (at least for me)
  6. 6. If you understand computer architecture classes You understand JVM
  7. 7. Why do I Need to Understand Internals?
  8. 8. We live in a simplified era
  9. 9. All externalised
  10. 10. All externalised (Almost)Normal dressed developers (external)
  11. 11. Do I need internal details?
  12. 12. Developer showing internal details
  13. 13. Memory analyse • Help! Perm gem problems! • Search for memory leaks • Memory analyser tools • Understand how JVM works
  14. 14. What’s the relation between: JVM Memory Bytecode Assembly Low Level OpCode Operator Operation Java
  15. 15. How do I get started? • http://www.artima.com/insidejvm/ed2/jvmP.html
  16. 16. How do I get started?
  17. 17. JVM - Low level Assembly
  18. 18. I know how to write Java code
  19. 19. ༼ つ ◕_◕ ༽つ classes ༼ つ ◕_◕ ༽つ
  20. 20. What happens when I invoke a method in Java
  21. 21. WAIT How many kinds of methods do you know?
  22. 22. 2 types of methods Clazz.method(); object.method(); static instance
  23. 23. From Assembly classes: op code + operand operation + operand
  24. 24. operation + operand add r1, r2 public int add(int r1, int r2) operation operators == parameters
  25. 25. Method calls in JVM staticinstance operation + operand operation + operand invokevirtual invokestatic
  26. 26. Where are the Operands? Special place
  27. 27. Where are the Operands? Real place
  28. 28. Symbolic place called pool
  29. 29. JVM keeps this fake references It’s a strategy to deal with dynamic linking
  30. 30. While JVM does not need the content of this fake box (pool), it remais unresolved
  31. 31. Each fake reference for each method is unique
  32. 32. Each fake reference for each method is unique So JVM can replace the fake calls with true invokes.
  33. 33. Back to methods Clazz.method(int a); object.method(parameter); class Lol { public int myMethod(int a){ // } } Class stuff
  34. 34. Method Area JVM Class stuff Class stuff Class stuff Non-HeapCode Cache PermanentGeneration
  35. 35. Done? object
  36. 36. ༼ つ ◕_◕ ༽つ object ༼ つ ◕_◕ ༽つ
  37. 37. Method Area JVM Class stuff Class stuff Class stuff Non-HeapPermanentGeneration HEAP PermanentGeneration object object object
  38. 38. Young gen JVM - The Heap HEAP Lol lol = new LOL(); lol object object object
  39. 39. JVM - The Heap HEAP PermanentGeneration object object object object object object object object object object object object object object object object Hey, Im’m heavy
  40. 40. JVM - The Heap HEAP PermanentGeneration object object object object object object object object object object object object object object object object Checks all the objects on the heap Garbage collector
  41. 41. Old gen Young generation JVM - The Heap HEAPobject object Eden lol Survivor object Will be taken for GC
  42. 42. Last step Where does my application run?
  43. 43. Last step public static void main(String[] args){ …}
  44. 44. ༼ つ ◕_◕ ༽つ thread ༼ つ ◕_◕ ༽つ
  45. 45. JVM - Thread Thread Heap Non-Heap
  46. 46. JVM - Thread Thread Program Counter Stack Frame Frame Frame Frame Frame Local variables [] Return Value Pointer to Method Area Pointer to Heap Area Operand Operand Operand Operand Stack
  47. 47. JVM - Sum up Program Counter Stack Frame Frame Frame Frame Heap Non-Heap Object instances Class Stuff/ Method Area Similar to Computer Architecture
  48. 48. What are those weird parameters? -XX -Xms HEAP HEAP JVM Optimization Techniques
  49. 49. Why should I study JVM? New languages Optimizations Architecture ideas Hardware and AI
  50. 50. ༼ つ ◕_◕ ༽つ JVM ༼ つ ◕_◕ ༽つ
  51. 51. ( ͡° ͜ʖ ͡°) JVM ( ͡° ͜ʖ ͡°)
  52. 52. Thanks!! Questions? @hannelita hannelita@gmail.com
  53. 53. References • http://www.artima.com/insidejvm/ed2/jvmP.html • http://www.cubrid.org/blog/dev-platform/understanding-jvm-internals/ • http://architects.dzone.com/articles/understanding-jvm-internals • http://www.ourdailycodes.com/2013/09/inside-java-jvm-memory-structure-2.html • http://javarevisited.blogspot.ca/2011/04/garbage-collection-in-java.html • http://www.slideshare.net/BalamuruganSoundararajan/invoke-dynamics • http://www.javaworld.com/article/2076949/learn-java/how-the-java-virtual-machine-handles- method-invocation-and-return.html • http://blog.jamesdbloom.com/JVMInternals.html#threads • http://www.amazon.com.br/Java-Virtual-Machine-Definition-Verification-ebook/dp/ B000V9G6QW/ref=sr_1_1?ie=UTF8&qid=1435028967&sr=8-1&keywords=java+virtual +machine

×