当前位置: 首页 > wzjs >正文

做学校网站素材图片网络运行维护

做学校网站素材图片,网络运行维护,公司做网站要花多少钱,免费网站建设凡科为什么要设计类加载器? 个人理解,仅供参考。java是跨平台的,运行的是字节码,每次运行时都是读取字节码然后执行字节码,类加载器就是把字节码读取进内存的一个工具,进入内存后才能有后续的步骤。而字节码的…

为什么要设计类加载器?

个人理解,仅供参考。java是跨平台的,运行的是字节码,每次运行时都是读取字节码然后执行字节码,类加载器就是把字节码读取进内存的一个工具,进入内存后才能有后续的步骤。而字节码的来源可以多种多样,可以是java代码编译出的一个.class文件,也可以是从网络或其他文件中读取出的二进制字节流。有了类加载器你就可以自己定义去哪里读取字节码。简而言之,没有类加载器,java字节码就无法进入内存

双亲委派机制的“双亲”是指哪两个?

即当Java程序需要使用某个类时,负责加载这个类的类加载器会首先把加载请求委托给它的父加载器,而不是自己直接加载,这种机制被称为双亲委派机制。那么,这里的“双亲”又是指哪两个呢?

请看官方文档:https://docs.oracle.com/javase/tutorial/ext/basics/load.html

The Java platform uses a delegation model for loading classes. The basic idea is that every class loader has a "parent" class loader. When loading a class, a class loader first "delegates" the search for the class to its parent class loader before attempting to find the class itself.

翻译:Java 平台采用委派模型来加载类。其基本思想是,每个类加载器都有一个 “父” 类加载器。在加载一个类时,类加载器会先将查找该类的任务 “委派” 给它的父类加载器,然后才会尝试自己去查找这个类。

我也一直在困惑这个“双亲”到底是指谁?经过不断搜索,结合官方文档,首先可以确定——“双亲委派”这个翻译是不太准确的!表意不明!这里的“parent”和普通的class loader是没有继承关系的,不能算“亲”,但是鉴于毕竟是翻译,允许有点偏差,这一点我觉得还可以接受。其次,官方文档里没有提到“双”!不知道这个“双”是从何而来!非常令人迷惑!所以网上有人提到“双亲委派”是个错误翻译。

还有一种说法,也是我自己揣测过的,就是一个自定义类加载类时,会先委托给扩展类加载器,再由扩展类加载器委托给启动类加载器。这样就出现了“双亲”。图示如下

既然反正最终也都是要交给启动类加载器去加载,

那么多层加载器又有什么意义呢?

这就要老生常谈地说起加载器的分类:

1、启动类加载器。只加载java的核心类(<JAVA_HOME>\lib下的)。由于java核心类是所有程序运行的基础,一定要确保核心类的正常运行,所以把核心类单独划出来,交由专门的启动类加载器来加载,避免其他类来干扰。

2、扩展类加载器。负责加载<JAVA_HOME>\lib/ext下的类。一些自定义的类也可以放到该目录下交由扩展类加载器加载。

3、应用程序类加载器(又叫系统类加载器)。负责加载用户类路径上所指定的库。

这样分类加载的好处(来自百度)

避免类的重复加载‌:通过双亲委派机制,当一个类加载器收到类加载请求时,它会先将该请求委派给它的父类加载器去尝试加载。只有当父类加载器无法加载该类时,子类加载器才会尝试加载。这样可以确保同一个类只被加载一次,避免了类的重复加载,提高了加载效率‌。

保证类的一致性‌:由于父类加载器优先加载类,可以保证类的一致性,避免了不同类加载器加载同一个类的问题。这有助于维护系统的稳定性和一致性‌。

保护核心类库的安全性‌:JVM中的根类加载器负责加载核心类库,如java.lang包下的类。由于根类加载器是由JVM实现的,无法通过Java代码直接访问,这样可以防止恶意代码替换核心类库,保护系统的安全性‌。

提供扩展机制‌:双亲委派机制允许开发人员自定义类加载器,实现特定的加载策略,从而扩展Java的类加载机制。这种灵活性使得Java能够适应不同的应用场景和需求‌。

那么,又一个问题让我迷惑了:既然有双亲委派机制,而且扩展类加载器中也是有委派机制的,那么最终不就都会由启动类加载器来加载了吗?又这样分层还有什么意义?

实际,启动类加载器在判断到所加载的类不是核心类后会拒绝加载,最终扩展类还是由扩展类加载器加载的。

与java 1.2版本之前的旧代码的兼容

之前的自定义加载器都是重写loadClass()来加载类的,出现双亲委派机制后,为兼容旧代码,就又新增了一个方法findClass(),并改写了loadClass()使其符合双亲委派:有父加载器,使用父加载器加载,没有父加载器就使用启动类加载器加载,仍然失败就调用自己的findClass()加载。这样,如果原来的自定义加载器重写了loadClass()并且没有调用super.loadClass(),则是完全不受影响的。如果调用了super.loadClass()呢?  那就得改,引导用户按新规则来。


文章转载自:

http://wJXgy4t7.xxwhz.cn
http://obZBidk1.xxwhz.cn
http://C08GM7JQ.xxwhz.cn
http://cLp6QypS.xxwhz.cn
http://beGy46Gr.xxwhz.cn
http://kXnKNt9O.xxwhz.cn
http://aWVoCmeg.xxwhz.cn
http://wwMuAZ7s.xxwhz.cn
http://A5HidEv8.xxwhz.cn
http://Ry3kJXsA.xxwhz.cn
http://orHO9zRr.xxwhz.cn
http://xh7jgtwm.xxwhz.cn
http://8akYuzEc.xxwhz.cn
http://AgWcSjI5.xxwhz.cn
http://PM53JO27.xxwhz.cn
http://adzYOgWY.xxwhz.cn
http://ZKqU3xgw.xxwhz.cn
http://YocMlYKt.xxwhz.cn
http://2X1ItjeB.xxwhz.cn
http://OrEm4x5m.xxwhz.cn
http://qHlYtBiI.xxwhz.cn
http://DrlzeNiE.xxwhz.cn
http://XVf7tWwc.xxwhz.cn
http://fTcEbWeb.xxwhz.cn
http://35h8ba5Y.xxwhz.cn
http://QNkIFzBF.xxwhz.cn
http://PJZSBvcm.xxwhz.cn
http://wdmcNAbS.xxwhz.cn
http://WccX8SXP.xxwhz.cn
http://X1E3fLVn.xxwhz.cn
http://www.dtcms.com/wzjs/623778.html

相关文章:

  • 淘宝网站怎么做的好看郑州妇科
  • 手机网站开发源码品牌推广岗位
  • seo快速排名网站优化白山网站制作
  • 建设部作业证件查询官方网站视频手机网站开发
  • 网站推广计划书包含哪些内容西安网站设计西安搜推宝
  • 专业的制作网站开发公司类似于wordpress的网站吗
  • 完整的app网站开发鞋 东莞网站建设 技术支持
  • wordpress域名网站搬家济南网站建设认可搜点网络
  • 外贸开发网站公司百度信息流怎么做效果好
  • 国内最大的c2c网站html网页设计步骤
  • 网站列表怎么做wordpress开发工作流
  • 建设一个普通的网站需要多少钱seo问答
  • 这个是以前我自己做的一个网站新闻发布会发言稿范文
  • 枣庄手机网站开发网页设计图片透明度怎么设置
  • 深圳市南山区住房和建设局官方网站校园网络设计报告
  • 喀什网站建设公司网站怎么显示备案号
  • 九口袋网站建设阳山做网站
  • 包装袋设计网站推荐为什么建设文化馆网站
  • 学校网站首页制作jsp网站建设项目
  • 淘宝网站建设图片素材建设学院网站意义
  • 建网站需要什么要求彩页设计教程
  • window2008 网站建设免费的ppt通用模板
  • 建设摩托官方网站自媒体全平台发布
  • 徽与章网站建设宗旨青岛做网站青岛做网站
  • 写一个网站需要什么技术哪里有放网站的免费空间
  • 谷歌seo优化北京网站的优化
  • 工会 网站 建设出名的网络公司有哪些
  • 做网站商城需要申请商标吗做网站推广被骗
  • 保定网站维护做房产的一般用哪个网站
  • 网站主题旁边的图标怎么做的所有网站打不开