Table of Contents
1. Class loading process
Loading
Link
Initialization
2. Class loader
Start class loader
Extension class loader
Application class loader
Custom class loader
Parental delegation model
Home Java javaTutorial Overview of Java class loaders and class loading process

Overview of Java class loaders and class loading process

Apr 24, 2023 am 10:13 AM
java

1. Class loading process

Overview of Java class loaders and class loading process

Loading

Get the class through the fully qualified name of the class (package name and class name) .class file, loaded into metaspace.

  • Verification:Check the security of the .class file

  • Preparation:Allocate memory for static type variables and set default values

  • Parsing:Convert symbol references in the constant pool to direct references , the symbol reference points to an unloaded class, or a field or method of an unloaded class, then the parsing will trigger the loading of this class

Initialization

Execution class The constructor method init() process, if the class has a parent class, jvm will ensure that the init of the parent class is executed first, and then the subclass is executed. The init.

2. Class loader

Overview of Java class loaders and class loading process

Start class loader

Start class loader is implemented by C/C language, using to load the Java core class library. The startup class only loads classes whose package names begin with: java, javax, and sun

Extension class loader

The parent class loader is Startup class loader. Load class libraries in the following two directories:

  • java.ext.dirsDirectory

  • JDK installation directory: jre/lib/extDirectory

We can put our own packages in the above directory and they will be automatically loaded. .

Application class loader

The parent class loader is Start class loader, which is responsible for loading environment variable classpath or system property java .class.pathThe class library under the specified path is the default class loader in the program. All classes in our Java program are loaded by it.

Custom class loader

Inherit the java.lang.ClassLoader class and override the findClass() method. If there are no too complex requirements, you can directly inherit the URLClassLoader class and override the loadClass method.

Function

  • Encryption: Java code can be easily decompiled, if you need to decompile your own code To encrypt to prevent decompilation, you can first encrypt the compiled code with a certain encryption algorithm. After the class is encrypted, you can no longer use Java's ClassLoader to load the class. In this case, you need to customize the ClassLoader to decrypt the class first when loading the class. , and then load again.

  • Load code from non-standard sources: If your bytecode is placed in a database or even in the cloud, you can customize the class loader to load classes from specified sources .

Parental delegation model

jvm uses an on-demand loading method for class files. When the class needs to be used, jvm will load its class file. Generate class objects in memory. When loading a class, the Parental delegation mechanism is used.

  • If a class loader receives a class loading request, it will not load it first, but will delegate the request to Parent class loader to execute.

  • If the parent class still has a parent class loader, continue to delegate upward until Start the class loader: Bootstrap ClassLoader

  • If the parent class loader can complete the loading task, it will return a successful result. If the parent class fails to load, the subclass will try to load it by itself. If the subclass fails to load, it will throw ClassNotFoundExceptionException, this isParental delegation model

Breaking the parent delegation model

Usage:

  • There are many service provider interfaces (Service Provider Interface, SPI) in Java applications. These interfaces allow third parties to provide implementations for them. For example, common SPIs include JDBC, JNDI, etc. These SPI interfaces belong to the Java core library, generally exist in the rt.jar package, and are loaded by the Bootstrap class loader. The Bootstrap class loader cannot directly load the SPI implementation class, so it needs to be delegated to other class loaders for loading.

  • In the Tomcat server, there is a server running multiple different versions. However, due to the demand for services with the same name, it is necessary to break the parent delegation model and load multiple classes with the same name.

Method:

  • Use context class loader

  • Reuse Write loadClassmethod

The above is the detailed content of Overview of Java class loaders and class loading process. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Perfect Number in Java Perfect Number in Java Aug 30, 2024 pm 04:28 PM

Guide to Perfect Number in Java. Here we discuss the Definition, How to check Perfect number in Java?, examples with code implementation.

Weka in Java Weka in Java Aug 30, 2024 pm 04:28 PM

Guide to Weka in Java. Here we discuss the Introduction, how to use weka java, the type of platform, and advantages with examples.

Smith Number in Java Smith Number in Java Aug 30, 2024 pm 04:28 PM

Guide to Smith Number in Java. Here we discuss the Definition, How to check smith number in Java? example with code implementation.

Java Spring Interview Questions Java Spring Interview Questions Aug 30, 2024 pm 04:29 PM

In this article, we have kept the most asked Java Spring Interview Questions with their detailed answers. So that you can crack the interview.

Break or return from Java 8 stream forEach? Break or return from Java 8 stream forEach? Feb 07, 2025 pm 12:09 PM

Java 8 introduces the Stream API, providing a powerful and expressive way to process data collections. However, a common question when using Stream is: How to break or return from a forEach operation? Traditional loops allow for early interruption or return, but Stream's forEach method does not directly support this method. This article will explain the reasons and explore alternative methods for implementing premature termination in Stream processing systems. Further reading: Java Stream API improvements Understand Stream forEach The forEach method is a terminal operation that performs one operation on each element in the Stream. Its design intention is

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Guide to TimeStamp to Date in Java. Here we also discuss the introduction and how to convert timestamp to date in java along with examples.

Java Program to Find the Volume of Capsule Java Program to Find the Volume of Capsule Feb 07, 2025 am 11:37 AM

Capsules are three-dimensional geometric figures, composed of a cylinder and a hemisphere at both ends. The volume of the capsule can be calculated by adding the volume of the cylinder and the volume of the hemisphere at both ends. This tutorial will discuss how to calculate the volume of a given capsule in Java using different methods. Capsule volume formula The formula for capsule volume is as follows: Capsule volume = Cylindrical volume Volume Two hemisphere volume in, r: The radius of the hemisphere. h: The height of the cylinder (excluding the hemisphere). Example 1 enter Radius = 5 units Height = 10 units Output Volume = 1570.8 cubic units explain Calculate volume using formula: Volume = π × r2 × h (4

Create the Future: Java Programming for Absolute Beginners Create the Future: Java Programming for Absolute Beginners Oct 13, 2024 pm 01:32 PM

Java is a popular programming language that can be learned by both beginners and experienced developers. This tutorial starts with basic concepts and progresses through advanced topics. After installing the Java Development Kit, you can practice programming by creating a simple "Hello, World!" program. After you understand the code, use the command prompt to compile and run the program, and "Hello, World!" will be output on the console. Learning Java starts your programming journey, and as your mastery deepens, you can create more complex applications.

See all articles