SlideShare uma empresa Scribd logo
1 de 43
Java Performance
       artdb@ex-em.com | performeister.tistory.com | twitter @novathinker




Class Loader
Java Performance
                                                                                      2

                             artdb@ex-em.com | performeister.tistory.com | twitter @novathinker


ClassLoader
   1)   Dynamic Linking
   2)   Namespace
   3)   Delegation Model
   4)   Classloader Tree in WAS
ClassLoader Work
   1)   ClassLoader Work
   2)   Loading
   3)    Linking
        (1) Verification
        (2) Preparation
        (3) Resolution
   4)   Initialization
Java Performance
        artdb@ex-em.com | performeister.tistory.com | twitter @novathinker




Class Loader
Java Performance
                                                                    4
                 Java Performance Fundamental | twitter @novathinker
                              artdb@ex-em.com | performeister.tistory.com
  ClassLoader



• Dynamic Linking
  – Runtime                          Class
  –             Class                                      Load
      Link
  –              Link       Classloader
  – JVM
      • Bootstrap Classloader
      • Java Runtime Library (rt.jar)
      • Object class
Java Performance
                                                                       5
                    Java Performance Fundamental | twitter @novathinker
                                 artdb@ex-em.com | performeister.tistory.com
     ClassLoader



• Dynamic Linking
     – Loadtime dynamic loading
         •            class

 public class Hello {
         public static void main(String[] args) {
                   System.out.println(“Hello EXEM”);
         }
 }
         • Java.lang.String, java.lang.System Hello class
              loading                     loading
Java Performance
                                                                      6
                   Java Performance Fundamental | twitter @novathinker
                                artdb@ex-em.com | performeister.tistory.com
     ClassLoader



• Dynamic Linking
  – Runtime dynamic loading (reflection)
         • Code

 public class Hello {
          public static void main(String[] args) {
                   Class cl = Class.forName(args[0]);
          }
 }
         • Class.forName(args[0])                             args[0]
                      Class
Java Performance
                                                                   7
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  ClassLoader



• Namespace
 – JVM                    Class                    Loading

 –              Class       ?


  1. Full Qualified Name            .
       Full Qualified Name = package name + class name
  2. Classloader            .
Java Performance
                                                                     8
                  Java Performance Fundamental | twitter @novathinker
                               artdb@ex-em.com | performeister.tistory.com
    ClassLoader



• Namespace
  –         Class Loader              Namespace



 Classloader                             Classloader
      1                                       2
                      Namespace
                                                             Namespace
            exem.package.jvmclass




            exem.package.jvmclass               exem.package.jvmclass
Java Performance
                                                                     8
                  Java Performance Fundamental | twitter @novathinker
                               artdb@ex-em.com | performeister.tistory.com
    ClassLoader



• Namespace
  –         Class Loader              Namespace



 Classloader                             Classloader
      1                                       2
                      Namespace
                                                             Namespace
            exem.package.jvmclass




            exem.package.jvmclass               exem.package.jvmclass
Java Performance
                                                                     8
                  Java Performance Fundamental | twitter @novathinker
                               artdb@ex-em.com | performeister.tistory.com
    ClassLoader



• Namespace
  –         Class Loader              Namespace



 Classloader                             Classloader
      1                                       2
                      Namespace
                                                             Namespace
            exem.package.jvmclass                exem.package.jvmclass




            exem.package.jvmclass
Java Performance
                                                                   9
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  ClassLoader




• Namespace
  – Symbolic Reference
  –                 Class Load              classloader
                class loading

 Class exemHello {
   Class cl = Class.forName(exem.package.jvmclass);
 }

 Classloader                          Classloader
      1                                    2
                                                         Namespace

                                                    exemHello

      exem.package.jvmclass
Java Performance
                                                                   9
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  ClassLoader




• Namespace
  – Symbolic Reference
  –                 Class Load              classloader
                class loading

 Class exemHello {
   Class cl = Class.forName(exem.package.jvmclass);
 }

 Classloader                          Classloader
      1                                    2
                                                         Namespace

                                                    exemHello

      exem.package.jvmclass
Java Performance
                                                                   9
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  ClassLoader




• Namespace
  – Symbolic Reference
  –                 Class Load              classloader
                class loading

 Class exemHello {
   Class cl = Class.forName(exem.package.jvmclass);
 }

 Classloader                          Classloader
      1                                    2
                                                         Namespace

                                                    exemHello

                                               exem.package.jvmclass
Java Performance
                                                                   10
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader



• Delegation Model
  – Classloder
Java Performance
                                                                      11
                   Java Performance Fundamental | twitter @novathinker
                                artdb@ex-em.com | performeister.tistory.com
  Classloader



• Delegation Model
  – Classloader
      • Bootstrap classloader
                :            classloader (no Parent)
                : native implementation
                : $JAVA_HOME/jre/lib/rt.jar
      • Extension classloader
                :     class
                : $JAVA_HOME/jre/lib/ext            jar file
      • System classloader
                : Application classloader
                : $CLASSPATH, java.class.path
Java Performance
                                                                   12
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader



• Delegation Model
  – Delegation Model
      •        classloader bootstrap
          parent
      •   Class              CacheParentSelf
      •   Class loading                  (delegation)
      •          classloader       default system
          classloader
      •          Parent                system
          classloader child
      •
Java Performance
                                                                      13
                   Java Performance Fundamental | twitter @novathinker
                                artdb@ex-em.com | performeister.tistory.com
  Classloader



• Delegation Model
  – Class             Loading
      • Classloader            loadClass()
                (1) Class
                (2) Load                  parent
                (3) Parent              findClass()    call
      • Classloader            findClass()
                – Current Classloader      Class
      • Delegation            Class
                – bootstrapextensionsystemuser-defined
                –                   Class       bootstap
                  extension          class path
Java Performance
                                                                      14
                   Java Performance Fundamental | twitter @novathinker
                                artdb@ex-em.com | performeister.tistory.com
  Classloader



• Delegation Model
  – Class             Loading
      • Classloader            loadClass()
                (1) Class
                (2) Load                  parent
                (3) Parent              findClass()    call
      • Classloader            findClass()
                – Current Classloader      Class
      • Delegation            Class
                – bootstrapextensionsystemuser-defined
                –                   Class       bootstap
                  extension          class path
Java Performance
                                                                   15
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader



• Classloader Tree in WAS
  – EJB, WAR           deploy                  classloader

      • Isolating the Application from other
        Applications
      • Sharing Class between deployed modules
      • Implementing multiple classloaders
Java Performance
                                                                   16
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader




• Classloader Tree in WAS
Java Performance
                                                                   17
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader




• Classloader Tree in WAS
Java Performance
                                                                    18
                 Java Performance Fundamental | twitter @novathinker
                              artdb@ex-em.com | performeister.tistory.com
  Classloader




• Class Sharing
  – Jvm                                  Load             Class
  – ClassLoader CacheParentShared Class File
    System

                                               Shared Class




                                Class
        JVM1

                JVM2


                       JVM3




                               Sharing
                                            JVM1

                                                   JVM2


                                                           JVM3
Java Performance
                                                                   19
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader




• Class Sharing
  – Hotspot JVM
         • Shared Archive
         • Jar   Class                            JVM     Memory
           Mapped File
         •      Shared Library
         • Client VM, Default Garbage Collector
Java Performance
                                                                   20
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader




• Class Sharing
  – IBM JVM
         • Class Cache

         • Class Cache        JVM                      – JVM
              Cache
         • JVM                Cache
         •                   Cache
         •          Cache                                  OS
Java Performance
                                                                   21
                Java Performance Fundamental | twitter @novathinker
                             artdb@ex-em.com | performeister.tistory.com
  Classloader




• Classloader Tree in WAS
  – Path              Parameter
         • -Xbootclasspath:<path(s) or file(s)>
           : Bootstrap classloader
         • -Xbootclasspath/a:<path(s) or file(s)>
           :        boot classpath
         • -Xbootclasspath/p:<path(s) or file(s)>
           :       boot classpath
         • -Djava.ext.dirs=<path(s) or file(s)>
           : Extension classloader
         • -cp, -classpath <path(s) or file(s)>
           -Djava.class.path=<path(s) or file(s)>
           : System classloader
Java Performance
          artdb@ex-em.com | performeister.tistory.com | twitter @novathinker




Class Loader Work
Java Performance
                                                                         23
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Classloader Work

                                       Link


          Load                        Verify




                                     Prepare




                                     Resolve                Initialize
Java Performance
                                                                        24
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Classloader Work
  – JVM class file                      loading, linking,
    Initializing                       Runtime Memory               Type


        • Loading : binary                   type     JVM

        • Linking : JVM             Runtime             Binary type
          data

               – Verification : JVM
               – Preparation: Type                  Memory
               – Resolution : constant pool       symbolic reference
Java Performance
                                                                        25
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Loading
  – Loading Process
        • Acquistion
          : java class file format              file, network

        • Parse
          : method area                                              parse
        • java.lang.class instance
          : class instance application                  jvm internal
          data         interface
Java Performance
                                                                        26
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Verification
        • Java language                   (semantic)
        • Verification                              Vendor
        • JVM         Verification
        • Exception
        •       Parse                       verification

               – File size
               – Superclass
        •                      Verification       Linking
Java Performance
                                                                        27
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Verification
        •
               – Final class      subclass

               – Final class      override

               – Abstract                              method

               – Type       superclass           method         ,
Java Performance
                                                                        28
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Verification
        • Superclass, superinterface                 load
               –          constant pool

               – Constant pool                 Class, Method
                      ,Method     descriptor       String

               – Bytecode                        (integrity)

                      »

                      »
Java Performance
                                                                        29
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Preparation
        •                                    ,        ,


        • Class                                     default

        •                                Method table            data


              – Method table : Superclass        method   superclass
Java Performance
                                                                        30
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Preparation
                     Variable Type             Default Value
              int                                    0
              long                                   0L
              short                               (short)0
              char                                ‘u0000’
              byte                                (byte)0
              reference                             null
              float                                  0.0f
              double                                0.0d
               Boolean
Java Performance
                                                                        30
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Preparation
                     Variable Type             Default Value
              int                                    0
              long                                   0L
              short                               (short)0
              char                                ‘u0000’
              byte                                (byte)0
              reference                             null
              float                                  0.0f
              double                                0.0d
               Boolean        Boolean primitive type
                                    int  (false default)
Java Performance
                                                                         31
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Resolution
        • Type              constant pool           class, interface,
           method, field             symbolic reference          direct
           reference

        • Eager                  lazy
              – Loading         Linking   JVM
              –         ,                        vendor
Java Performance
                                                                           32
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Resolution
        • Eager                lazy
              – Eager          : JVM          Application               Class
                             Loading, Linking
              – Lazy          : First Actual Use            Loading, Linking
              –         Vendor         Lazy
              – 1.4              Eager
                      » Hotspot : -XX:+eagerinitializtion (1.4.1)
                      » IBM : -Dibm.cl.eagerresolution (1.4.2)
Java Performance
                                                                        33
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Resolution
        • Actual Use
              – Explicit loading
              – Actual Use of class
                      » Class   new instance
                      » Element type           class       array
                      »                Class             method
                      » Final static             class
Java Performance
                                                                        34
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Linking
  – Resolution
        • Actual Use
              – Actual Use of interface
                      » Interface

        •                compile
                                     Passive Use          implicit
            loading
Java Performance
                                                                        35
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Initialization
  –                    initial value       class
        •                Value

  – Class Initialization Step
        •             superclass             initialized
            superclass                 initializing
        • Class           class initialization method <clinit()
Java Performance
                                                                        36
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Initialization
  – Interface Initialization Step
        • Interface           superinterface        initialization
                                 initialization method

  – Loading, Linking                            Initialization time


        • First Active Use                     Initialization

        • Loading, Linking              Initialization
Java Performance
                                                                        37
                     Java Performance Fundamental | twitter @novathinker
                                  artdb@ex-em.com | performeister.tistory.com
  Classloader Work




• Initialization
  – Synchronization

        •                Thread      initialization
                      Thread                                 Thread
            Wait

        • Initialization                          Thread         notify
Java Performance
                                                   38
Java Performance Fundamental | twitter @novathinker
             artdb@ex-em.com | performeister.tistory.com

Mais conteúdo relacionado

Mais procurados

Jvm internal
Jvm internalJvm internal
Jvm internalGo Tanaka
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方Funato Takashi
 
Jmespathをもっと広めたい
Jmespathをもっと広めたいJmespathをもっと広めたい
Jmespathをもっと広めたいTetsunori Nishizawa
 
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudyスローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudyYusuke Yamamoto
 
Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...
Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...
Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...Amazon Web Services
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?Takahiro YAMADA
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Norito Agetsuma
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011Charles Nutter
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open APIKohei Saito
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javaYuji Kubota
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門minazou67
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight RecorderYoshiro Tokumasu
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについてオープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM JavaについてTakakiyo Tanaka
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011Kris Mok
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 

Mais procurados (20)

Java 9 Features
Java 9 FeaturesJava 9 Features
Java 9 Features
 
Jvm internal
Jvm internalJvm internal
Jvm internal
 
スレッドダンプの読み方
スレッドダンプの読み方スレッドダンプの読み方
スレッドダンプの読み方
 
Jmespathをもっと広めたい
Jmespathをもっと広めたいJmespathをもっと広めたい
Jmespathをもっと広めたい
 
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudyスローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
スローダウン、ハングを一発解決 スレッドダンプはトラブルシューティングの味方 #wlstudy
 
Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...
Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...
Releasing Software Quickly and Reliably With AWS CodePipeline by Mark Mansour...
 
これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?これからのJDK/JVM 何を選ぶ?どう選ぶ?
これからのJDK/JVM 何を選ぶ?どう選ぶ?
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
 
Spring framework core
Spring framework coreSpring framework core
Spring framework core
 
JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011JVM for Dummies - OSCON 2011
JVM for Dummies - OSCON 2011
 
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open APIRESTful API (JAX-RS) 書くだけで仕様書も自動で作られていく話 with MicroProfile Open API
RESTful API (JAX-RS) 書くだけで仕様書も 自動で作られていく話 with MicroProfile Open API
 
java.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷javajava.lang.OutOfMemoryError #渋谷java
java.lang.OutOfMemoryError #渋谷java
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder使ってみよう!JDK Flight Recorder
使ってみよう!JDK Flight Recorder
 
Tomcatx performance-tuning
Tomcatx performance-tuningTomcatx performance-tuning
Tomcatx performance-tuning
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについてオープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
オープンソースで提供される第二のJVM:OpenJ9 VMとIBM Javaについて
 
JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011JVM @ Taobao - QCon Hangzhou 2011
JVM @ Taobao - QCon Hangzhou 2011
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 

Semelhante a 4장. Class Loader

6장 Thread Synchronization
6장 Thread Synchronization6장 Thread Synchronization
6장 Thread Synchronization김 한도
 
Understanding ClassLoaders
Understanding ClassLoadersUnderstanding ClassLoaders
Understanding ClassLoadersMartin Skurla
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarAbir Mohammad
 
5 the final_hard_part
5 the final_hard_part5 the final_hard_part
5 the final_hard_partHonnix Liang
 
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...gustavoeliano
 
Android course session 5 (Threads & socket)
Android course session 5 (Threads & socket)Android course session 5 (Threads & socket)
Android course session 5 (Threads & socket)Keroles M.Yakoub
 
Scala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud FoundryScala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud FoundryPray Desai
 
1669617800196.pdf
1669617800196.pdf1669617800196.pdf
1669617800196.pdfvenud11
 
Java Interview Questions Answers Guide
Java Interview Questions Answers GuideJava Interview Questions Answers Guide
Java Interview Questions Answers GuideDaisyWatson5
 
Java class loader
Java class loaderJava class loader
Java class loaderbenewu
 
White and Black Magic on the JVM
White and Black Magic on the JVMWhite and Black Magic on the JVM
White and Black Magic on the JVMIvaylo Pashov
 
Do you really get class loaders?
Do you really get class loaders? Do you really get class loaders?
Do you really get class loaders? guestd56374
 

Semelhante a 4장. Class Loader (20)

Java Class Loader
Java Class LoaderJava Class Loader
Java Class Loader
 
0 E158 C10d01
0 E158 C10d010 E158 C10d01
0 E158 C10d01
 
0 E158 C10d01
0 E158 C10d010 E158 C10d01
0 E158 C10d01
 
Java Class Loading
Java Class LoadingJava Class Loading
Java Class Loading
 
6장 Thread Synchronization
6장 Thread Synchronization6장 Thread Synchronization
6장 Thread Synchronization
 
Understanding ClassLoaders
Understanding ClassLoadersUnderstanding ClassLoaders
Understanding ClassLoaders
 
Diving into Java Class Loader
Diving into Java Class LoaderDiving into Java Class Loader
Diving into Java Class Loader
 
Packages and interfaces
Packages and interfacesPackages and interfaces
Packages and interfaces
 
Learn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat ShahriyarLearn Java with Dr. Rifat Shahriyar
Learn Java with Dr. Rifat Shahriyar
 
5 the final_hard_part
5 the final_hard_part5 the final_hard_part
5 the final_hard_part
 
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...Use of Java™ Technology-Based Class Loaders  to Design and Implement a Java P...
Use of Java™ Technology-Based Class Loaders to Design and Implement a Java P...
 
Android course session 5 (Threads & socket)
Android course session 5 (Threads & socket)Android course session 5 (Threads & socket)
Android course session 5 (Threads & socket)
 
Scala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud FoundryScala, Play 2.0 & Cloud Foundry
Scala, Play 2.0 & Cloud Foundry
 
inheritance.pptx
inheritance.pptxinheritance.pptx
inheritance.pptx
 
Core java
Core javaCore java
Core java
 
1669617800196.pdf
1669617800196.pdf1669617800196.pdf
1669617800196.pdf
 
Java Interview Questions Answers Guide
Java Interview Questions Answers GuideJava Interview Questions Answers Guide
Java Interview Questions Answers Guide
 
Java class loader
Java class loaderJava class loader
Java class loader
 
White and Black Magic on the JVM
White and Black Magic on the JVMWhite and Black Magic on the JVM
White and Black Magic on the JVM
 
Do you really get class loaders?
Do you really get class loaders? Do you really get class loaders?
Do you really get class loaders?
 

Mais de 김 한도

Big Data Myth 1. 우리 회사엔 빅데이터가 없어요
Big Data Myth 1. 우리 회사엔 빅데이터가 없어요Big Data Myth 1. 우리 회사엔 빅데이터가 없어요
Big Data Myth 1. 우리 회사엔 빅데이터가 없어요김 한도
 
실시간 빅데이터와 머신 데이터
실시간 빅데이터와 머신 데이터실시간 빅데이터와 머신 데이터
실시간 빅데이터와 머신 데이터김 한도
 
In memory as a data innovation
In memory as a data innovationIn memory as a data innovation
In memory as a data innovation김 한도
 
Facebook과 연동하기
Facebook과 연동하기Facebook과 연동하기
Facebook과 연동하기김 한도
 
7장 Oracle As Datasource
7장 Oracle As Datasource7장 Oracle As Datasource
7장 Oracle As Datasource김 한도
 
5장. Execution Engine
5장. Execution Engine5장. Execution Engine
5장. Execution Engine김 한도
 

Mais de 김 한도 (6)

Big Data Myth 1. 우리 회사엔 빅데이터가 없어요
Big Data Myth 1. 우리 회사엔 빅데이터가 없어요Big Data Myth 1. 우리 회사엔 빅데이터가 없어요
Big Data Myth 1. 우리 회사엔 빅데이터가 없어요
 
실시간 빅데이터와 머신 데이터
실시간 빅데이터와 머신 데이터실시간 빅데이터와 머신 데이터
실시간 빅데이터와 머신 데이터
 
In memory as a data innovation
In memory as a data innovationIn memory as a data innovation
In memory as a data innovation
 
Facebook과 연동하기
Facebook과 연동하기Facebook과 연동하기
Facebook과 연동하기
 
7장 Oracle As Datasource
7장 Oracle As Datasource7장 Oracle As Datasource
7장 Oracle As Datasource
 
5장. Execution Engine
5장. Execution Engine5장. Execution Engine
5장. Execution Engine
 

Último

Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfFIDO Alliance
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekCzechDreamin
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreelreely ones
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxDavid Michel
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty SecureFemke de Vroome
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKUXDXConf
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoUXDXConf
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfFIDO Alliance
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FIDO Alliance
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...FIDO Alliance
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...marcuskenyatta275
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 

Último (20)

Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdfSimplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
Simplified FDO Manufacturing Flow with TPMs _ Liam at Infineon.pdf
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
AI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří KarpíšekAI revolution and Salesforce, Jiří Karpíšek
AI revolution and Salesforce, Jiří Karpíšek
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
THE BEST IPTV in GERMANY for 2024: IPTVreel
THE BEST IPTV in  GERMANY for 2024: IPTVreelTHE BEST IPTV in  GERMANY for 2024: IPTVreel
THE BEST IPTV in GERMANY for 2024: IPTVreel
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
ECS 2024 Teams Premium - Pretty Secure
ECS 2024   Teams Premium - Pretty SecureECS 2024   Teams Premium - Pretty Secure
ECS 2024 Teams Premium - Pretty Secure
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Connecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAKConnecting the Dots in Product Design at KAYAK
Connecting the Dots in Product Design at KAYAK
 
The UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, OcadoThe UX of Automation by AJ King, Senior UX Researcher, Ocado
The UX of Automation by AJ King, Senior UX Researcher, Ocado
 
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdfWhere to Learn More About FDO _ Richard at FIDO Alliance.pdf
Where to Learn More About FDO _ Richard at FIDO Alliance.pdf
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
Secure Zero Touch enabled Edge compute with Dell NativeEdge via FDO _ Brad at...
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 

4장. Class Loader

  • 1. Java Performance artdb@ex-em.com | performeister.tistory.com | twitter @novathinker Class Loader
  • 2. Java Performance 2 artdb@ex-em.com | performeister.tistory.com | twitter @novathinker ClassLoader 1) Dynamic Linking 2) Namespace 3) Delegation Model 4) Classloader Tree in WAS ClassLoader Work 1) ClassLoader Work 2) Loading 3) Linking (1) Verification (2) Preparation (3) Resolution 4) Initialization
  • 3. Java Performance artdb@ex-em.com | performeister.tistory.com | twitter @novathinker Class Loader
  • 4. Java Performance 4 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Dynamic Linking – Runtime Class – Class Load Link – Link Classloader – JVM • Bootstrap Classloader • Java Runtime Library (rt.jar) • Object class
  • 5. Java Performance 5 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Dynamic Linking – Loadtime dynamic loading • class public class Hello { public static void main(String[] args) { System.out.println(“Hello EXEM”); } } • Java.lang.String, java.lang.System Hello class loading loading
  • 6. Java Performance 6 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Dynamic Linking – Runtime dynamic loading (reflection) • Code public class Hello { public static void main(String[] args) { Class cl = Class.forName(args[0]); } } • Class.forName(args[0]) args[0] Class
  • 7. Java Performance 7 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – JVM Class Loading – Class ? 1. Full Qualified Name . Full Qualified Name = package name + class name 2. Classloader .
  • 8. Java Performance 8 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – Class Loader Namespace Classloader Classloader 1 2 Namespace Namespace exem.package.jvmclass exem.package.jvmclass exem.package.jvmclass
  • 9. Java Performance 8 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – Class Loader Namespace Classloader Classloader 1 2 Namespace Namespace exem.package.jvmclass exem.package.jvmclass exem.package.jvmclass
  • 10. Java Performance 8 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – Class Loader Namespace Classloader Classloader 1 2 Namespace Namespace exem.package.jvmclass exem.package.jvmclass exem.package.jvmclass
  • 11. Java Performance 9 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – Symbolic Reference – Class Load classloader class loading Class exemHello { Class cl = Class.forName(exem.package.jvmclass); } Classloader Classloader 1 2 Namespace exemHello exem.package.jvmclass
  • 12. Java Performance 9 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – Symbolic Reference – Class Load classloader class loading Class exemHello { Class cl = Class.forName(exem.package.jvmclass); } Classloader Classloader 1 2 Namespace exemHello exem.package.jvmclass
  • 13. Java Performance 9 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com ClassLoader • Namespace – Symbolic Reference – Class Load classloader class loading Class exemHello { Class cl = Class.forName(exem.package.jvmclass); } Classloader Classloader 1 2 Namespace exemHello exem.package.jvmclass
  • 14. Java Performance 10 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Delegation Model – Classloder
  • 15. Java Performance 11 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Delegation Model – Classloader • Bootstrap classloader : classloader (no Parent) : native implementation : $JAVA_HOME/jre/lib/rt.jar • Extension classloader : class : $JAVA_HOME/jre/lib/ext jar file • System classloader : Application classloader : $CLASSPATH, java.class.path
  • 16. Java Performance 12 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Delegation Model – Delegation Model • classloader bootstrap parent • Class CacheParentSelf • Class loading (delegation) • classloader default system classloader • Parent system classloader child •
  • 17. Java Performance 13 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Delegation Model – Class Loading • Classloader loadClass() (1) Class (2) Load parent (3) Parent findClass() call • Classloader findClass() – Current Classloader Class • Delegation Class – bootstrapextensionsystemuser-defined – Class bootstap extension class path
  • 18. Java Performance 14 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Delegation Model – Class Loading • Classloader loadClass() (1) Class (2) Load parent (3) Parent findClass() call • Classloader findClass() – Current Classloader Class • Delegation Class – bootstrapextensionsystemuser-defined – Class bootstap extension class path
  • 19. Java Performance 15 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Classloader Tree in WAS – EJB, WAR deploy classloader • Isolating the Application from other Applications • Sharing Class between deployed modules • Implementing multiple classloaders
  • 20. Java Performance 16 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Classloader Tree in WAS
  • 21. Java Performance 17 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Classloader Tree in WAS
  • 22. Java Performance 18 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Class Sharing – Jvm Load Class – ClassLoader CacheParentShared Class File System Shared Class Class JVM1 JVM2 JVM3 Sharing JVM1 JVM2 JVM3
  • 23. Java Performance 19 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Class Sharing – Hotspot JVM • Shared Archive • Jar Class JVM Memory Mapped File • Shared Library • Client VM, Default Garbage Collector
  • 24. Java Performance 20 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Class Sharing – IBM JVM • Class Cache • Class Cache JVM – JVM Cache • JVM Cache • Cache • Cache OS
  • 25. Java Performance 21 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader • Classloader Tree in WAS – Path Parameter • -Xbootclasspath:<path(s) or file(s)> : Bootstrap classloader • -Xbootclasspath/a:<path(s) or file(s)> : boot classpath • -Xbootclasspath/p:<path(s) or file(s)> : boot classpath • -Djava.ext.dirs=<path(s) or file(s)> : Extension classloader • -cp, -classpath <path(s) or file(s)> -Djava.class.path=<path(s) or file(s)> : System classloader
  • 26. Java Performance artdb@ex-em.com | performeister.tistory.com | twitter @novathinker Class Loader Work
  • 27. Java Performance 23 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Classloader Work Link Load Verify Prepare Resolve Initialize
  • 28. Java Performance 24 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Classloader Work – JVM class file loading, linking, Initializing Runtime Memory Type • Loading : binary type JVM • Linking : JVM Runtime Binary type data – Verification : JVM – Preparation: Type Memory – Resolution : constant pool symbolic reference
  • 29. Java Performance 25 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Loading – Loading Process • Acquistion : java class file format file, network • Parse : method area parse • java.lang.class instance : class instance application jvm internal data interface
  • 30. Java Performance 26 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Verification • Java language (semantic) • Verification Vendor • JVM Verification • Exception • Parse verification – File size – Superclass • Verification Linking
  • 31. Java Performance 27 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Verification • – Final class subclass – Final class override – Abstract method – Type superclass method ,
  • 32. Java Performance 28 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Verification • Superclass, superinterface load – constant pool – Constant pool Class, Method ,Method descriptor String – Bytecode (integrity) » »
  • 33. Java Performance 29 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Preparation • , , • Class default • Method table data – Method table : Superclass method superclass
  • 34. Java Performance 30 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Preparation Variable Type Default Value int 0 long 0L short (short)0 char ‘u0000’ byte (byte)0 reference null float 0.0f double 0.0d Boolean
  • 35. Java Performance 30 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Preparation Variable Type Default Value int 0 long 0L short (short)0 char ‘u0000’ byte (byte)0 reference null float 0.0f double 0.0d Boolean Boolean primitive type int (false default)
  • 36. Java Performance 31 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Resolution • Type constant pool class, interface, method, field symbolic reference direct reference • Eager lazy – Loading Linking JVM – , vendor
  • 37. Java Performance 32 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Resolution • Eager lazy – Eager : JVM Application Class Loading, Linking – Lazy : First Actual Use Loading, Linking – Vendor Lazy – 1.4 Eager » Hotspot : -XX:+eagerinitializtion (1.4.1) » IBM : -Dibm.cl.eagerresolution (1.4.2)
  • 38. Java Performance 33 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Resolution • Actual Use – Explicit loading – Actual Use of class » Class new instance » Element type class array » Class method » Final static class
  • 39. Java Performance 34 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Linking – Resolution • Actual Use – Actual Use of interface » Interface • compile Passive Use implicit loading
  • 40. Java Performance 35 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Initialization – initial value class • Value – Class Initialization Step • superclass initialized superclass initializing • Class class initialization method <clinit()
  • 41. Java Performance 36 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Initialization – Interface Initialization Step • Interface superinterface initialization initialization method – Loading, Linking Initialization time • First Active Use Initialization • Loading, Linking Initialization
  • 42. Java Performance 37 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com Classloader Work • Initialization – Synchronization • Thread initialization Thread Thread Wait • Initialization Thread notify
  • 43. Java Performance 38 Java Performance Fundamental | twitter @novathinker artdb@ex-em.com | performeister.tistory.com