阅读 106

jvm的传唱-类加载

jvm的传唱-类加载

PS:承接上一篇文档,由于初次写文档记录类内容,对于博客园目前的文档编译不熟悉,第一篇文章写的太不好看了,这次换了个模式 ,看看能好看点不,便于阅读。

先通过代码看看类加载器的种类和效果

 View Code

        为什么要使用这种模式呢,这里简单说两句,1.保障同一个类型 尤其是底层库类的唯一性,防止非法篡改,在jvm中判断一个对象的类型是与类加载器有关的,不同的类加载器即便对于开发人员来说一样的对象代码,表示出来的类型也是不一样的,所以还是能区别出来。

       如何实现自定义的类加载器呢,每次通过先委托父类加载器加载,当父类加载器无法加载时,再自己加载。其实 ClassLoader 类默认的 loadClass 方法已经帮我们写好了,我们无需去写。

       有的小伙伴可能会疑问,为什么要自定义类加载器,平时开发好像没怎么用到,有啥用呢?我总结自己觉得可能用到的地方,有的地方写的第三方jar包需要给别人使用,为了保障代码相对安全不被轻易解读,可以通过自定义类加载器在加载时进行加密处理,这样相对来说吧 是能解决安全问题的。

      开始编写自定义类加载器代码如下,大家可以参考借鉴

 View Code

复制代码

"C:\Program Files\Java\jdk1.8.0_66\bin\java.exe" -Dvisualvm.id=603520010088200 "-javaagent:D:\ProgramSoft\JetBrains\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=63737:D:\ProgramSoft\JetBrains\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_66\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_66\jre\lib\rt.jar;D:\IdeaProjects\leecode\out\production\leecode" com.bface.calculate.ClassLoaderLecode
系统类加载器sun.misc.Launcher$AppClassLoader@14dad5dc
扩展类加载器sun.misc.Launcher$ExtClassLoader@1b6d3586
启动类加载器null
自定义类的类加载器sun.misc.Launcher$AppClassLoader@14dad5dc
我是由com.bface.calculate.ClassLoaderLecode$ZdyClassLoader类加载器加载的

复制代码

服务器评测 http://www.cncsto.com/ 

服务器测评 http://www.cncsto.com/ 

站长资源 https://www.cscnn.com/ 


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐