search
HomeJavajavaTutorialOverview of Java class loaders and class loading process

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
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
Java cache data loss: Why can't data be retrieved from cache?Java cache data loss: Why can't data be retrieved from cache?Apr 19, 2025 pm 02:57 PM

Analysis and optimization solutions for the reason why Java cache data cannot be obtained In Java projects, it is common to cache large amounts of data into memory for quick access...

If you want to become a better Java developer, what aspects of JVM are the most worth investing in?
or
Java Advanced: In-depth research on JVM, which core mechanisms are most worth exploring?If you want to become a better Java developer, what aspects of JVM are the most worth investing in? or Java Advanced: In-depth research on JVM, which core mechanisms are most worth exploring?Apr 19, 2025 pm 02:54 PM

In-depth Java: A virtual machine world worth exploring. Many Java developers hope to further improve their technology after mastering the basic syntax and commonly used frameworks...

How to solve the problem of data overwriting and style loss of merged cells when populating Excel templates with EasyExcel?How to solve the problem of data overwriting and style loss of merged cells when populating Excel templates with EasyExcel?Apr 19, 2025 pm 02:51 PM

Frequently Asked Questions When Filling Merged Cells with EasyExcel...

How to efficiently solve the field mapping in system docking through the MapStruct tool?How to efficiently solve the field mapping in system docking through the MapStruct tool?Apr 19, 2025 pm 02:48 PM

Field mapping challenges and solutions in system docking. During the system docking process, you often encounter the need to map the interface fields of one system to another...

How to solve the exception 'PSQLException: ERROR: canceling statement due to user request' in SpringBoot application?How to solve the exception 'PSQLException: ERROR: canceling statement due to user request' in SpringBoot application?Apr 19, 2025 pm 02:45 PM

In SpringBoot application, PgJDBC connection pool throws PSQLException:ERROR:cancelingstatementduetouserrequest exception is used. SpringBoot MyBatis-Plus...

How to design a lottery algorithm to ensure that you don't lose money?How to design a lottery algorithm to ensure that you don't lose money?Apr 19, 2025 pm 02:42 PM

How to design a lottery algorithm to ensure that you don’t lose money? When designing a lottery product, how to set the winning probability of each prize is a key question. Assuming...

How to filter and synchronize hotspot data to improve the efficiency of large-scale data synchronization?How to filter and synchronize hotspot data to improve the efficiency of large-scale data synchronization?Apr 19, 2025 pm 02:39 PM

How to optimize the filtering and synchronization of hotspot data? When dealing with large-scale data synchronization, how to effectively filter hotspot data has become a key issue. Assuming that there is...

Can virtual threads and multithreading parallel achieve 'invincible' concurrency performance in Java programming?Can virtual threads and multithreading parallel achieve 'invincible' concurrency performance in Java programming?Apr 19, 2025 pm 02:36 PM

Java virtual threading and multithreading parallel: Compatibility challenge In Java programming, the introduction of virtual threads provides developers with more efficient concurrency processing methods. �...

See all articles

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

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.