SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Java basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini indiaJava basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini indiaSanjeev Tripathi
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyBytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyKoichi Sakata
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
 
Java Generics: a deep dive
Java Generics: a deep diveJava Generics: a deep dive
Java Generics: a deep diveBryan Basham
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentationguest11106b
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교JungWoon Lee
 
Strings in Java
Strings in Java Strings in Java
Strings in Java Hitesh-Java
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentationJohn Slick
 
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Edureka!
 
LatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode FundamentalsLatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode Fundamentalsdenis Udod
 
Hibernate tutorial for beginners
Hibernate tutorial for beginnersHibernate tutorial for beginners
Hibernate tutorial for beginnersRahul Jain
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlArjun Thakur
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Hitesh-Java
 

Was ist angesagt? (20)

Java basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini indiaJava basic tutorial by sanjeevini india
Java basic tutorial by sanjeevini india
 
Bytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte BuddyBytecode Manipulation with a Java Agent and Byte Buddy
Bytecode Manipulation with a Java Agent and Byte Buddy
 
Ch12 Spring 起步走
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
 
Java Generics: a deep dive
Java Generics: a deep diveJava Generics: a deep dive
Java Generics: a deep dive
 
Core java
Core javaCore java
Core java
 
Java Class Loader
Java Class LoaderJava Class Loader
Java Class Loader
 
Spring Core
Spring CoreSpring Core
Spring Core
 
Hibernate Presentation
Hibernate  PresentationHibernate  Presentation
Hibernate Presentation
 
IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교IBM JVM 소개 - Oracle JVM 과 비교
IBM JVM 소개 - Oracle JVM 과 비교
 
Strings in Java
Strings in Java Strings in Java
Strings in Java
 
jpa-hibernate-presentation
jpa-hibernate-presentationjpa-hibernate-presentation
jpa-hibernate-presentation
 
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
Advance Java Tutorial | J2EE, Java Servlets, JSP, JDBC | Java Certification T...
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
LatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode FundamentalsLatJUG. Java Bytecode Fundamentals
LatJUG. Java Bytecode Fundamentals
 
Swing
SwingSwing
Swing
 
JPA For Beginner's
JPA For Beginner'sJPA For Beginner's
JPA For Beginner's
 
Hibernate tutorial for beginners
Hibernate tutorial for beginnersHibernate tutorial for beginners
Hibernate tutorial for beginners
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 

Ähnlich wie 4장. Class Loader

6장 Thread Synchronization
6장 Thread Synchronization6장 Thread Synchronization
6장 Thread Synchronization김 한도
 
Understanding ClassLoaders
Understanding ClassLoadersUnderstanding ClassLoaders
Understanding ClassLoadersMartin Skurla
 
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
 
Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3Sagar Verma
 

Ähnlich wie 4장. Class Loader (20)

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
 
Packages and interfaces
Packages and interfacesPackages and interfaces
Packages and interfaces
 
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?
 
Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3Statics in java | Constructors | Exceptions in Java | String in java| class 3
Statics in java | Constructors | Exceptions in Java | String in java| class 3
 
Java basics
Java basicsJava basics
Java basics
 
Core Java
Core JavaCore Java
Core Java
 

Mehr von 김 한도

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김 한도
 

Mehr von 김 한도 (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
 

Kürzlich hochgeladen

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingEdi Saputra
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Kürzlich hochgeladen (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

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