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

JVM Internals Demystified

hannelita
February 19, 2015

JVM Internals Demystified

Confoo 2015

hannelita

February 19, 2015
Tweet

More Decks by hannelita

Other Decks in Technology

Transcript

  1. ༼ つ ◕_◕ ༽つ JVM Internals ༼ つ ◕_◕ ༽つ
    Demystified! ( ͡° ͜
    ʖ ͡°)
    ༼ つ ◕_◕ ༽つ ༼ つ ◕_◕ ༽つ

    View Slide

  2. What we will NOT see here
    • Pure JVM boring theory
    • Assembly fear stuff
    • 0xFF
    • 0100111

    View Slide

  3. What we will see here
    • Why internals?
    • Method Area
    • Heap
    • Threads
    • Further reading
    • Funny Gifs and images!

    View Slide

  4. Bonjour

    View Slide

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

    View Slide

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

    View Slide

  7. View Slide

  8. No advanced stuff
    Simplified way

    View Slide

  9. If you understand computer architecture
    classes
    You understand JVM

    View Slide

  10. Why do I Need to
    Understand Internals?

    View Slide

  11. We live in a simplified era

    View Slide

  12. All externalised

    View Slide

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

    View Slide

  14. Do I need internal details?

    View Slide

  15. Developer showing internal
    details

    View Slide

  16. Memory analyse
    • Help! Perm gem problems!
    • Search for memory leaks
    • Memory analyser tools
    • Understand how JVM works

    View Slide

  17. What’s the relation between:
    JVM
    Memory
    Bytecode
    Assembly
    Low Level
    OpCode
    Operator
    Operation
    Java

    View Slide

  18. View Slide

  19. How do I get started?
    • http://www.artima.com/insidejvm/ed2/jvmP.html

    View Slide

  20. How do I get started?

    View Slide

  21. JVM - Low level
    Assembly

    View Slide

  22. I know how to write Java
    code

    View Slide

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

    View Slide

  24. What happens when I
    invoke a method in Java

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. operation + operand
    add r1, r2
    public int add(int r1, int r2)
    operation operators == parameters

    View Slide

  29. Method calls in JVM
    static
    instance
    operation
    +
    operand
    operation
    +
    operand
    invokevirtual invokestatic

    View Slide

  30. Where are the Operands?
    Special
    place

    View Slide

  31. Where are the Operands?
    Real place

    View Slide

  32. Symbolic place called pool

    View Slide

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

    View Slide

  34. While JVM does need the
    content of this fake box
    (pool), it remais
    unresolved

    View Slide

  35. Each fake reference for
    each method is unique

    View Slide

  36. Each fake reference for
    each method is unique
    So JVM can replace the
    fake calls with true
    invokes.

    View Slide

  37. Back to methods
    Clazz.method(int a);
    object.method(parameter);
    class Lol {
    public int myMethod(int a){
    //
    }
    }
    Class stuff

    View Slide

  38. Method Area
    JVM
    Class stuff Class stuff Class stuff
    Non-Heap
    Code Cache
    Permanent Generation

    View Slide

  39. Done?
    object

    View Slide

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

    View Slide

  41. Method Area
    JVM
    Class stuff Class stuff Class stuff
    Non-Heap
    Permanent Generation
    HEAP
    Permanent Generation
    object
    object
    object

    View Slide

  42. Young gen
    JVM - The Heap
    HEAP
    Lol lol = new LOL();
    lol
    object object
    object

    View Slide

  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

    View Slide

  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

    View Slide

  45. Old gen
    Young generation
    JVM - The Heap
    HEAP
    object object
    Eden
    lol
    Survivor
    object
    Will be taken for GC

    View Slide

  46. Last step
    Where does my application
    run?

    View Slide

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

    View Slide

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

    View Slide

  49. JVM - Thread
    Thread
    Heap Non-Heap

    View Slide

  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

    View Slide

  51. JVM - Sum up
    Program Counter Stack
    Frame
    Frame
    Frame
    Frame
    Heap Non-Heap
    Object instances
    Class Stuff/
    Method Area
    Similar to
    Computer
    Architecture

    View Slide

  52. ༼ つ ◕_◕ ༽つ JVM ༼ つ ◕_◕ ༽つ

    View Slide

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

    View Slide

  54. Thanks!!
    Questions?
    @hannelita
    [email protected]

    View Slide

  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

    View Slide