网站快速收录的方法,制作网站上海,wordpress 建站案例,seo职业JVM学习笔记
复习之前学的内容#xff0c;同时补充以下知识点#xff1a;JVM的双亲委派机制、伊甸区与老年代相关知识#xff1b;
双亲委派机制
首先介绍Java中的类加载器
Java中的类加载器
Bootstrap ClassLoader#xff08;启动类加载器#xff09;#xff0c;默认…JVM学习笔记
复习之前学的内容同时补充以下知识点JVM的双亲委派机制、伊甸区与老年代相关知识
双亲委派机制
首先介绍Java中的类加载器
Java中的类加载器
Bootstrap ClassLoader启动类加载器默认加载jdk\lib目录下jar中的诸多类。可以使用-Xbootclasspath指定。 Extension ClassLoader扩展类加载器默认加载jdk\lib\ext目录下的jar中的诸多类。可以使用java.ext.dirs系统变量更改。 Application ClassLoader应用程序加载器应用程序加载器负责加载开发人员所编写的诸多类。 User ClassLoader自定义加载器自定义类加载器当存在上述加载器解决不了的特殊情况时或者存在特殊要求时可以自行实现类加载逻辑。 关系图
双亲委派 通俗故事 假设用户刚刚摸鱼时写了个Test类想进行加载此时会发送给应用程序类加载器AppClassLoader然后AppClassLoader并不会直接去加载Test类而是会委派于父类ExtClassLoader来完成此操作ExtClassLoader同样不会直接加载Test类而是会继续委派父类BootstrapClassLoaderBootstrapClassLoader已经是顶层了没有更高的父类加载器了因此BootstrapClassLoader就从jdk\lib中搜索是否存在因为这里是用户自己写的Test类因此不会存在于jdk下所以此时会给子类一个反馈ExtClassLoader收到父类传回的反馈知道父类加载器没有找到对应的类爸爸靠不住就只能自己来加载了结果显而易见自己也不行只能给下面的子类加载器AppClassLoaderAppClassLoader收到父类加载器的反馈顿时明白原来爸爸虽然是爸爸但是终究不能管儿子的私事所以此时AppClassLoader就自己尝试去加载。结果就这样成功了走了一大圈兜兜转转还是自己干。 什么是双亲委派
为什么使用双亲委派
专业性解释①避免类的重复加载②防止核心API被篡改 为了避免原始类被覆盖的问题。 老子走过的路小子不用走 比如用户编写了一个Object类放入程序中加载。 当没有双亲委派机制时就会出现重复的Object类给开发人员造成很大的困扰本来就只需要基于JDK开发就好了现在还得把JDK中的类全记住避免编写重复的类。 当存在双亲委派机制时整个事情就不一样了每次加载类时都会遵循双亲委派机制去问父类是否可以加载如果可以呢那就不需要再次加载了这样事情就简单了。
如何打破双亲委派模型太高级尝试看一下
为什么要考虑这个问题
自定义类加载器时重写loadClass方法。
双亲委派还有什么
def