Java虚拟机父类委托机制设计的优点

昨天朋友的聊天中,讨论起了Java虚拟机的机制,父类委托机制,根加载器、扩展类加载器、应用类加载器.....说了很多,但是朋友(辉哥)的一句话,为什么这样设计呢?这样设计有什么好处?有什么缺陷?我不知道如何回答,我想知道一件事情,必须知其然,也知其所以然,我想,这样才能将知识学透,学明白,回家的时候就翻了翻《深入理解Java虚拟机》周志明的书,想从中寻找一些答案,我就试着寻找了起来......

同一个*.class文件,需要同一个类加载器加载。

(1)双亲委派模型(父类委托机制),有一个显而易见的好处是Java类随着它的类加载器一起具备了带有优先级的层次关系。

(2)如果没有父类委托机制,自己写了一个java.lang.Object类,并放在程序的ClassPath中,那么系统将出现多个不同的Object类,Java类型体系中最基本的行为也无法保证。

上面这两点足可以说明父类委托机制的好处,保证同一个*.class文件,由同一个类加载器加载,不会产生不同的结果。

下面是摘自博客的一段话:

/**********************************************************************************

父亲委托机制的优点是能够提高软件系统的安全性。

因为在此机制下,用户自定义的类加载器不可能加载应该由父加载器加载的可靠类,从而防止不可靠甚至恶意的代码代替由父加载器加载的可靠代码。

例如,java.lang.Object类总是由根类加载器加载,其他任何用户自定义的类加载器都不可能加载含有恶意代码的java.lang.Object类。

**********************************************************************************/

综上所述:Java虚拟机使用父类委托机制最大的好处是安全性的保证,在程序里面,最基本的安全性保证的前提下,再去做些别的事情是最重要的。

记得在营销学中,人的最终极的需求是自身的安全,当地震时,最先考虑的自身的安全性,保证自身安全的情况下,再去关注别人的安全,也许这是人类的最初的最根本的需求。

就如同前天下雨一样,每个人考虑的是自身是否被雨浇,都去疯狂的在同一时间下班,造成北京道路的拥堵,以至于很多人走着回家的结局,可见自身的安全性还是重要的,但是孟子所谓的老吾老以及人之老,幼吾幼以及人之幼的说法还又待于思考,是否人类可以改变自身安全性这一根深蒂固的思维观念。

对于Java虚拟机的生存而言,能否持续的发展下去,首先保证其能够为大家提供一个安全的机制,保证自己编写的代码不会被恶意破坏。

咬定青山不放松,立根原在破岩中

千磨万击还坚劲,任尔东西南北风

java 父委托机制优点_Java虚拟机父类委托机制设计的优点相关推荐

  1. java虚拟机加载类_java虚拟机之类加载机制(一)

    一.首先先说一下java虚拟机的生命周期: 1.执行了system.exit(): 2.程序正常执行结束: 3.程序在执行过程中遇到了异常或错误而终止: 4.由于操作系统出现错误而导致java虚拟机进 ...

  2. java gc回收机制种类_JAVA的垃圾回收机制(GC)

    1.什么是垃圾回收? 垃圾回收(Garbage Collection)是Java虚拟机(JVM)垃圾回收器提供的一种用于在空闲时间不定时回收无任何对象引用的对象占据的内存空间的一种机制. 2.什么时候 ...

  3. java符号引用 直接引用_java虚拟机的符号引用和直接引用

    在java中,一个java类将会编译成一个class文件.在编译时,java类并不知道引用类的实际内存地址,因此只能使用符号引用来代替.比如org.simple.People类引用org.simple ...

  4. java char占用多少字节_Java虚拟机:Java对象大小、对象内存布局及锁状态变化

    一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...

  5. java垃圾回收机制标记_Java的垃圾回收机制-垃圾收集算法(一)

    当需要排查各种内存溢出,内存泄漏等问题时,当垃圾收集成为系统达到更高并发的瓶颈时,我们有必要深入GC的原理. image.png 常见垃圾回收算法 在查看垃圾回收具体过程的时候,运行程序加上: -XX ...

  6. java中cache是什么_java中的cache机制

    java应用中cache最常用的场合是:将程序或系统经常要调用的对象存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率.一般的用法就是把数据从数据库 ...

  7. java 子类调用静态方法吗_Java子父类中静态方法

    Java中的静态方法只能继承,不能重写!! 官方文档是这样写的: Class methods If a subclass defines a class method with the same si ...

  8. java数据库连接池简单讲解_Java数据库连接池原理机制的详细讲解

    1.根本概念及原理 由上面的剖析能够看出,疑问的本源就在于对数据库衔接资源的低效办理.咱们晓得,关于共享资源,有一个很闻名的描绘方法:资源池 (Resource Pool).该方法正是为了处置资源的频 ...

  9. java string 内存写了_Java String的内存机制

    JVM运行时,会将内存分为两个部分:堆和栈.堆中存放的是创建的对象,而栈中存放的方法调用过程的局部变量或引用.而设计Java字符串对象内存实现的时候,在堆中又开辟了一块很小的内存,称之为字符串常量池, ...

最新文章

  1. python基础-垃圾回收机制
  2. 至2019年全球Hadoop市场年复合增长率将达53%
  3. Win2008 R2 WEB 服务器设置之禁用不必要的服务和关闭端口
  4. 最长上升子序列(LIS) nlogn解法
  5. C++中的值初始化和默认初始化
  6. c语言博客作业03-函数
  7. 【SpringCloud】服务注册之 Consul
  8. XPath: A Syntax for Describing Needles and Haystacks(Chapter 3 of XSLT 2nd Edition)
  9. ora 27102 linux,ORA-27102: out of memory Linux-x86_64 Error: 12: Cannot allocate memory
  10. 几个查询优化小技巧,可以大大提高效率并解决一些问题
  11. Hadoop 源代码分析(二三)FSDirectory
  12. bui框架与php结合,bui框架前端自定义配色基础属性
  13. Java线程池如何体现自己的用途
  14. kangle源码idc下载_kangle康乐idc商务系统搭建源码+教程
  15. Python网络爬虫阶段总结
  16. LINUX QT移植到ARM (zynq平台 qt5.4.1)
  17. ST-BlueNrg-lp蓝牙芯片OTA升级过程
  18. Max-Product Loopy Belief Propagation
  19. 网狐经典版后台操作手册,后台说明
  20. 如何在winows的PPT里面使用醒目的思源系列字体(思源宋体/黑体)

热门文章

  1. 我的世界服务器修改地图,我的世界如何修改地图?
  2. Plant Simulation 更改字体样式
  3. 成为顶尖的AI算法工程师,你该具备些什么?
  4. 计算机修图教程,电脑修图太复杂 3步教你学会用手机做肤色后期
  5. 系统工作开发流程规范
  6. Android 蓝牙连接
  7. r语言中将茎叶图旋转90度_R语言(02)绘图
  8. jupyter notebook 打开md文件
  9. 2021支付宝五福活动 集五福攻略大全
  10. 数据分析综述:一文带你详细了解自动驾驶技术