Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JVM Internals Demystified

83a8147c3c83c22e1e421c3420e768f9?s=47 hannelita
February 19, 2015

JVM Internals Demystified

Confoo 2015

83a8147c3c83c22e1e421c3420e768f9?s=128

hannelita

February 19, 2015
Tweet

More Decks by hannelita

Other Decks in Technology

Transcript

  1. ༼ つ ◕_◕ ༽つ JVM Internals ༼ つ ◕_◕ ༽つ

    Demystified! ( ͡° ͜ ʖ ͡°) ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ
  2. What we will NOT see here • Pure JVM boring

    theory • Assembly fear stuff • 0xFF • 0100111
  3. What we will see here • Why internals? • Method

    Area • Heap • Threads • Further reading • Funny Gifs and images!
  4. Bonjour

  5. Hi! I’m Hanneli São Paulo, Brazil

  6. Hi! I’m Hanneli Meanwhile here in Canada

  7. None
  8. No advanced stuff Simplified way

  9. If you understand computer architecture classes You understand JVM

  10. Why do I Need to Understand Internals?

  11. We live in a simplified era

  12. All externalised

  13. All externalised (Almost)Normal dressed developers (external)

  14. Do I need internal details?

  15. Developer showing internal details

  16. Memory analyse • Help! Perm gem problems! • Search for

    memory leaks • Memory analyser tools • Understand how JVM works
  17. What’s the relation between: JVM Memory Bytecode Assembly Low Level

    OpCode Operator Operation Java
  18. None
  19. How do I get started? • http://www.artima.com/insidejvm/ed2/jvmP.html

  20. How do I get started?

  21. JVM - Low level Assembly

  22. I know how to write Java code

  23. ༼ つ ◕_◕ ༽つ classes ༼ つ ◕_◕ ༽つ

  24. What happens when I invoke a method in Java

  25. WAIT How many kinds of methods do you know?

  26. 2 types of methods Clazz.method(); object.method(); static instance

  27. From Assembly classes: op code + operand operation + operand

  28. operation + operand add r1, r2 public int add(int r1,

    int r2) operation operators == parameters
  29. Method calls in JVM static instance operation + operand operation

    + operand invokevirtual invokestatic
  30. Where are the Operands? Special place

  31. Where are the Operands? Real place

  32. Symbolic place called pool

  33. JVM keeps this fake references It’s a strategy to deal

    with dynamic linking
  34. While JVM does need the content of this fake box

    (pool), it remais unresolved
  35. Each fake reference for each method is unique

  36. Each fake reference for each method is unique So JVM

    can replace the fake calls with true invokes.
  37. Back to methods Clazz.method(int a); object.method(parameter); class Lol { public

    int myMethod(int a){ // } } Class stuff
  38. Method Area JVM Class stuff Class stuff Class stuff Non-Heap

    Code Cache Permanent Generation
  39. Done? object

  40. ༼ つ ◕_◕ ༽つ object ༼ つ ◕_◕ ༽つ

  41. Method Area JVM Class stuff Class stuff Class stuff Non-Heap

    Permanent Generation HEAP Permanent Generation object object object
  42. Young gen JVM - The Heap HEAP Lol lol =

    new LOL(); lol object object object
  43. JVM - The Heap HEAP Permanent Generation object object object

    object object object object object object object object object object object object object Hey, Im’m heavy
  44. JVM - The Heap HEAP Permanent Generation 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
  45. Old gen Young generation JVM - The Heap HEAP object

    object Eden lol Survivor object Will be taken for GC
  46. Last step Where does my application run?

  47. Last step public static void main(String[] args){ …}

  48. ༼ つ ◕_◕ ༽つ thread ༼ つ ◕_◕ ༽つ

  49. JVM - Thread Thread Heap Non-Heap

  50. 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
  51. JVM - Sum up Program Counter Stack Frame Frame Frame

    Frame Heap Non-Heap Object instances Class Stuff/ Method Area Similar to Computer Architecture
  52. ༼ つ ◕_◕ ༽つ JVM ༼ つ ◕_◕ ༽つ

  53. ( ͡° ͜ ʖ ͡°) JVM ( ͡° ͜ ʖ

    ͡°)
  54. Thanks!! Questions? @hannelita hannelita@gmail.com

  55. 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