java类加载器和tomcat的类加载器

深入理解 Tomcat(四)Tomcat 类加载器之为何违背双亲委派模型 这是我们研究Tomcat的第四篇文章,前三篇文章我们搭建了源码框架,了解了tomcat的大致的设计架构, 还写了一个简单的服务器。按照我们最初订的计划,今天,我们要开始研究tomcat的几个主要组件(组件太多,无法一一解析,解析几个核心),包括核心的类加载器,连接器和容器,还有生命周期,还有pipeline 和 valve。一个一个来,今天来研究类加载器。我们分为4个部分来探讨: 1. 什么是类 阅读详情

java的类加载器
1.什么是类加载器:
所谓类加载器就是把.class文件加载到jvm的方法区内,变成一个Class对象 。
2.类加载器的作用:
首先说明,类加载器是每一个类在创建的时候都会使用的一个“引路人”,它把.class文件“指引到”jvm的方法区 ,变成一个Class对象,然后进行使用,也可以这么说,类加载器就是jvm的一个左膀右臂或者是“小兵”。
3.类加载的名称:
ClassLoader
4.创建对象的具体过程
ClassLoader把.class文件读入内存的方法区,并且执行静态代码块和静态初始化语句------>执行new,在堆内存中创建一个空白对象-------->调用构造器和子类调用父类构造器--------->执行构造器内的逻辑并且为非静态成员变量赋初值,
5.类加载器的分类:
java虚拟机一共分成三类,每一类都有自己的职能,但是有“范围”和“权力”的大小
从大到小依次是:引导:专门负责加载\jdk1.7.0_80\jre\lib\rt.jar,下的类
扩展类加载器:专门负责扩展的类加载器
系统类加载:专门负责classpath下的类也就是项目下的\bin,这个包括项目下的.class,程序员自己写的类,以及第三方jar
6.如何获得类加载器:
在Class类里有一个getClassLoader()方法,可以获取类加载器。
7.类加载器的委托机制:
当程序员在new一个类的时候系统类加载器就会去加载这个类------>但是此时它并不会马上加载而是先去询问扩展类记载器是否可以加载------->同样扩展类加载器也不会马上加载而是回去询问引导能问加载------->如果引导在rt.jar下找到了相关.class文件,那么就会加载这个文件并返回此对象-------->如果引导没有找到那么就会返回null,通知扩展类加载器去加载----->同样的道理,如果扩展类加载器有次文件,那么加载并返回对象-------->否则返回null----------->此时轮到系统类加载器加载文件,发现有此文件,那么会生成此对象------->如果没有那么就会抛出异常ClassNotFoundException
8.类加载器的委托机制的好处:
有人会问,类加载的委托机制这么复杂,为什么还要用呢?答案就是为了安全,试想一下,如果系统类记载器直接就找到并加载这个类,那么是否一个居心叵测的人写了一个和jdk里面同名的类型比如String ,是不是就会加载这个类型,而不去加载rt.jar下的类型了呢,而此时jvm内很多方法都依赖String类型,是不是也就不能用了呢。所以这种方式可以保证类加载的绝对安全!!!
类内部的对象由那个类加载器加载取决于这个对象所在的类由那个类加载器加载。
Tomcat的类加载器
Tomcat提供了两个类加载器,所以在javaweb项目的时候导入第三方jar的时候,导入到web项目的WEB-INF/lib就可以,
这两个累加器分别是:
* 服务器类加载器:负责加载KaTeX parse error: Undefined control sequence: \lib at position 16: {CATALINA_HOME}\̲l̲i̲b̲下面的类! …{CONTEXT_HOME}\WEB-INF\lib、${CONTEXT_HOME}\WEB-INF\classes,这两个路径下的类!
总体顺序排序
引导
扩展扩展类加载器
系统类类加载器
服务器类加载器
应用类加载器:
但是这两个类加载器有一个特点,就是不具备委托机制,所以在做javaweb项目的时候一定不要把 KaTeX parse error: Undefined control sequence: \WEB at position 15: {CONTEXT_HOME}\̲W̲E̲B̲-INF\lib下的jar放到{CATALINA_HOME}\lib

深入理解Tomcat类加载器:为何打破双亲委派模型? 本文将深入探讨Tomcat类加载器的架构和工作机制,以及为何Tomcat需要打破双亲委派模型。我们将详细分析Tomcat类加载器的特殊性和实现细节,以及它对Java应用和开发者的影响。希望通过这篇博客,读者能够更深入地理解Tomcat类加载器的重要性,以及为何有时需要违背传统的双亲委派模型。 阅读详情

相关推荐

深入理解Tomcat类加载器与DevLoader特性

本文还有配套的精品资源,点击获取 简介:Tomcat作为一个流行的Java Web应用容器,其类加载器在运行时负责管理Java类的加载。本简介探讨了Java类加载器的基本概念和双亲委派模型,详细介绍了Tomcat中类加载器的层级结构及其支持Web应用隔离的机制。提到了可能存在的"DevLoader"类加载器,它可能具备热部署功能以提高开发效率。文档还涵盖了通过配置文件对类加...

weixin_42581846的博客 1121

Java类加载机制与Tomcat类加载器架构

Java类加载机制 类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足Java Applet的需求而开发出来的。虽然目前Java A

Hopefully Sky的博客 1万+

ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解

本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。

weixin_29193259的博客 518

Java面试题18-tomcat为什么要使用自定义的类加载器

tomcat为什么要使用自定义的类加载器

z318913的博客 1454

跨模态行人重识别实战:Python复现SYSU-MM01官方评估协议

本文详细介绍了如何用Python复现SYSU-MM01数据集的官方评估协议,以解决原Matlab代码在Python生态中不便使用的问题。文章深入解析了数据集的`indoor`与`all`两种评估模式,并提供了完整的Python代码实现,包括特征加载、相似度计算、Rank-k与mAP指标计算等核心步骤,确保评估结果与官方Matlab版本完全一致,助力跨模态行人重识别研究。

weixin_29081163的博客 99

SIwave串扰分析保姆级教程:从Allegro文件导入到结果解读,手把手教你排查PCB信号问题

本文提供SIwave串扰分析的详细教程,从Allegro文件导入到结果解读,手把手教你排查PCB信号问题。涵盖环境准备、参数配置、串扰扫描技巧及实战案例,帮助工程师精准定位和解决高速PCB设计中的串扰问题,提升信号完整性分析能力。

weixin_42620913的博客 260

java的类加载器和Tomcat的类加载器

java的类加载器    1.什么是类加载器:            所谓类加载器就是把.class文件加载到jvm的方法区内,变成一个Class对象 。    2.类加载器的作用:            首先说明,类加载器是每一个类在创建的时候都会使用的一个“引路人”,它把.class文件“指引到”jvm的方法区 ,变成一个Class对象,然后进行使用,也可以这么说,类加载器就是jvm的一个左膀...

swf_shixinshou的博客 805

从DDH到FastANI:原核生物分类黄金标准的进化史与技术对比

本文系统梳理了原核生物分类标准从DDH到FastANI的四次技术革命,详细解析了95%相似度阈值的科学依据及应用场景。通过对比DDH、16S rRNA、ANI和FastANI的技术特点与性能指标,为微生物研究者提供基因组分类的实战指南,并展望第三代测序时代的分类新挑战。

weixin_29275257的博客 415

tomcat9类加载器

我们都知道,tomcat9加载器结构如下图: BoostrapClassLoader:启动类加载器,它是用本地代码实现的类装载器,负责将 JDK 中 jre/lib 下的 类库 或者 XBootClassPath指定的类库加载到内存中,开发者无法直接获取到该加载器的引用(本地代码实现),所以无法通过引用操作 ExtClassLoader:拓展类加载器,由sun公司sun.misc.Laun...

大龙的博客 1454

MTK(基础篇)ROM烧录以及分区的作用

本文介绍了MTK芯片设备的刷机流程及关键分区功能。首先通过MTK烧录工具加载ROM文件(包括引导文件和分区表),重点解析了各分区的核心作用:preloader类似BIOS负责硬件初始化;lk作为二级引导程序加载内核;vbmeta验证系统完整性;boot包含Linux内核;dtbo调整硬件配置;modem管理通信功能;tee保护生物识别数据;system/vendor分别存放系统核心和硬件驱动。特别指出preloader、vbmeta等关键分区损坏会导致设备变砖,而recovery分区是重要的救砖入口。全文简

weixin_49303682的博客 445

手把手教你学Simulink——基于全桥 LLC 谐振变换器的双向 DC-DC 建模与仿真

本文详细介绍了基于Simulink的双向全桥LLC谐振变换器建模与仿真方法。内容涵盖:1)LLC谐振变换器背景与双向化挑战;2)系统架构设计及关键数学推导(FHA增益分析、双向控制逻辑);3)Simulink建模步骤(功率级搭建、PWM生成、同步整流实现);4)仿真结果分析(正向/反向工作验证、ZVS特性);5)工程实践建议(增益微调、代码生成与HIL测试)。通过手把手教学,帮助读者掌握950V↔48V双向LLC变换器的完整设计流程,实现高效率能量双向流动的同时保持软开关特性,适用于储能系统、车载充电等应用

MHD0815的博客 179

Tomcat8源码分析系列-类加载器

类加载器 在分析 tomcat 类加载之前,我们简单的回顾下 java 体系的类加载器 启动类加载器(Bootstrap ClassLoader):加载对象是java的核心类库,把一些的 java 类加载到 jvm 中,它并不是我们熟悉的 ClassLoader,而是 jvm 层面由 C/C++ 实现的类加载器,负责加载 $JAVA_HOME/jre/lib 目录下 jvm 指定的类库,它是...

黄小厮的博客 2752

基于Simulink的智能车辆电子稳定控制(ESC)仿真

本文完成了基于 Simulink 的智能车辆电子稳定控制(ESC),实现了:✅ 构建含轮胎非线性的车辆动力学模型✅ 设计滑模横摆稳定性控制器✅ 实现四轮制动力分配逻辑✅ 验证在双移线低附着场景下的卓越稳定性✅ 为主动安全控制系统开发提供完整范式。

xiaoheshang_123的博客 82

Java类加载器--Tomcat ClassLoader类加载器和WebappClassLoader类加载器

本文Tomcat版本基于apache-tomcat-8.5.12.看一下Tomcat的源码Bootstrap类的initClassLoader方法,代码如下: private void initClassLoaders() { try { // 创建commonLoader // 这里父加载器传递null,但是内部会使用默认的类加载器AppClassL...

DemoTransfer 1650

Pytorch实现之SRGAN+CBAM的结构设计

在SRGAN的残差连接中加入了CBAM注意力机制,同时设计了四类损失来训练。

LJ1147517021的博客 573

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

JAVA类加载器和tomcat类加载体系

一、JVM规范的类加载器1. BootStrap Loader:加载/jre/lib或者System.getProperty("sun.boot.class.path")、或者-XBootclasspath参数指定的路径下的jar 2. Extended Loader:加载/jre/lib/ext或者System.getProperty("java.ext.dirs")、或者-Djava..ext.

byronone的专栏 398

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java类加载过程(双亲委派模型)和 破坏双亲委派 及 tomcat类加载器

一、java类加载过程(双亲委派模型) 我们先来看一张图片,有助于理解类加载器与类加载过程。 概念 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。 类的生命周期 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、(验证、准备、解析)连接、初始化、使用、卸载。其中验证、准备、解析统称为连接 上图中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须严格按照这种顺序开始。 解析阶段

qq_25106373的博客 738

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

java类加载器和tomcat的类加载

类加载器的代理模式 1、启动类加载器BootstrapClassLoader 2、扩展类加载器Extension ClassLoader 3、系统类加载器App ClassLoader 如果一个类加载器收到了一个类加载请求,它不会自己去尝试加载这个类,而是把这个请求转交给父类加载器去完成。每一个层次的类加载器都是如此。因此所有的类加载请求都应该传递到最顶层的启动类加载器中,只有到父类加载器...

define_us的专栏 386

Java类加载器和双亲委派模型及Tomcat/SPI为什么要打破双亲委派

JDK 提供的三层类加载器 Bootstrap ClassLoader 启动类加载器,它在类加载器里处于顶层,任何类的加载都要询问它,它的作用是加载核心类库,比如rt.jar、resources.jar、charsets.jar。 主要用于加载JAVA_HOME/lib目录下的类库,也可以通过-Xbootclasspath 参数指定路径。 这个加载器是C++编写的,随着 JVM 启动,通过代码获取为null。 Extention ClassLoader 扩展类加载器,主要用于加载JAVA_HOME/lib

WLQ0621的博客 1231

au加载默认的输入和输出设备失败_Java类加载机制与Tomcat类加载器架构

Java类加载机制类加载器 虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足Java Applet的需求而开发出来的。虽然目前...

weixin_39572794的博客 134

Tomcat源码分析-类加载器

在分析 tomcat 类加载之前,我们简单的回顾下 java 体系的类加载器下图描述了类加载器的关系图,其中自定义类加载器有N多个我们知道有双亲委派机制(准确的说是单亲,因为只有一个parent),这只是 java 建议的规范,我们也可以不遵循这条规则,但是建议遵循该规则。此外,有一点需要注意的是,类加载器不局限于,我们也可以自己实现一个类加载器,只要你加载出来的 Class 符合 jvm 规范即可。

qq_33291299的博客 891

java类随着tomcat启动加载_Java和Tomcat类加载机制

加载类是运行程序的基础,了解Java和Tomcat的类加载机制对更有效地开发、调试Web应用程序有一定的积极作用。本文简单介绍Java和Tomcat的类加载机制,希望对大家有所帮助。•JDK/JRE文件结构在安装JDK后,其典型的目录层次如下所示(JDK 1.6.0):主要的目录和JAR简述如下:•\bin:包含在JDK中的开发工具的可执行文件,一般而言,PATH环境变量应包含该目录。•\lib...

weixin_35767180的博客 449

深入剖析Tomcat之Bootstrap类与类加载器机制

Bootstrap类作为Tomcat启动入口,通过main方法完成关键初始化工作:设置路径参数、创建多级类加载器(commonLoader、catalinaLoader、sharedLoader)并加载核心Catalina类。Tomcat采用分层类加载机制,commonLoader加载基础通用类,catalinaLoader加载容器核心类,sharedLoader处理共享资源,实现了类资源的安全隔离与高效管理。这种设计既保证了系统稳定性,又为Web应用提供了灵活的类加载环境。

wj_rdk的博客 836

类加载器和Tomcat类加载器

类加载器和Tomcat类加载器 类加载器 1.启动类加载器(Bootstrap ClassLoader):负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath 参数指定路径中的,且被虚拟机认可(按文件名识别,如 rt.jar)的类。 2.扩展类加载器(Extension ClassLoader):负责加载 JAVA_HOME\lib\ext 目录中的,或通过 jav...

UchihaItachi1的博客 298

Java和Tomcat类加载机制

加载类是运行程序的基础,了解Java和Tomcat的类加载机制对更有效地开发、调试Web应用程序有一定的积极作用。本文简单介绍Java和Tomcat的类加载机制,希望对大家有所帮助。 JDK/JRE文件结构在安装JDK后,其典型的目录层次如下所示(JDK 1.6.0): 主要的目录和JAR简述如下:/bin: 包含在JDK

7194
上一篇: java类加载器
下一篇: 数据库优化--索引
小亮彡
博客等级 码龄7年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值