java 为什么要有这么多 不同的classloader

WeiSilu 2015-01-07 09:14:44
为什么不 统一用一个加载?比如都用bookstrap 加载,通过设计一个添加jar或classpath路径的函数,然后统一用这个bookstrap 加载??

是出于安全的设计吗?那篡改rt.jar能破坏这种安全机制吗?篡改jar包添加一个自己定义的类?(本人小白瞎猜的)
是出于持久态 大小的控制吗?自定义的classloader能动态加载jar或class,来保持持久态不会在开启jvm的时候太大? 那我统一用一种带添加路径的函数的改写版bookstrap 不也可以吗?干嘛搞这么多classloader
Bootstrap ClassLoader 、Extension ClassLoader、System ClassLoader还有tomcat中的catalina ClassLoader等等


...全文
299 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
WeiSilu 2015-01-07
  • 打赏
  • 举报
回复
改天一定各种好好试试。
WeiSilu 2015-01-07
  • 打赏
  • 举报
回复
引用 2 楼 bao110908 的回复:
不能,你可以试试看。 类加载器限制了不加载包名以 java. 开头的类。这主要是为了安全考虑的。 当然了,可以通过使用 -Xbootclasspath/p:xxx.jar 参数在系统类加载器之前加载 java. 开头的类。javac 和 java 命令都有这个参数可以使用。 警告,这样做的风险非常大,不建议这么做!
那多classloader 目的,是为了如同private一样做到class的访问隔离?
  • 打赏
  • 举报
回复
不能,你可以试试看。 类加载器限制了不加载包名以 java. 开头的类。这主要是为了安全考虑的。 当然了,可以通过使用 -Xbootclasspath/p:xxx.jar 参数在系统类加载器之前加载 java. 开头的类。javac 和 java 命令都有这个参数可以使用。 警告,这样做的风险非常大,不建议这么做!
WeiSilu 2015-01-07
  • 打赏
  • 举报
回复
好像明白了一点点。。。出于安全访问 通过 StandardClassLoader classLoader = new StandardClassLoader(array); //array 为路径列表 来随便访问不可能了。 有linux 访问权限

50,526

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧