关于jvm启动时类加载的问题

xiaqi1210 2012-11-11 09:13:42
jvm启动时,是不是会同时用bootstrap去加载最基本的class
那ExtClassloader也会去同时加载ext下面的class吗,
还是说ext下面的class是用到的时候才会去加载
同样,AppClassloader是怎么样的方式呢

最好有官方的说明url之类的,可以让我看一下,O(∩_∩)O谢谢~~
...全文
171 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
龙四 2012-11-12
  • 打赏
  • 举报
回复
加载分为 装载-连接-初始化 三个步骤 装载 即将class文件读入内存,构建成jvm自定义的数据结构,产生一个java.lang.Class对象 连接 验证字节码,为类变量分配内存并赋默认值,并可以做一些常量池解析 初始化 只有当一个类被主动使用的时候才会被初始化,初始化就是为类变量赋初始值,执行static块 关于 装载 这个阶段,jvm有很大的自由,将所有jar包中的类都装进去也没有问题 关键在于初始化阶段,只有 主动使用 才能初始化,何为主动使用? 一个类在下列情形下才是主动使用,才会被初始化: 1、创建该类的实例 2、调用该类中声明的静态方法 3、操作该类或接口中声明的非常量静态字段 4、调用特定的反射方法 5、初始化该类的子类 6、该类作为虚拟机启动时的初始类 这里我用了加载和装载两个词以区分,但在英文中都是load,有人可能都译作 加载
chenshuang_com 2012-11-12
  • 打赏
  • 举报
回复
start %cd%\jdk\jdk1.5\bin\javaw -Xmx512m -Xms128m -cp .\lib\package-Tools.jar -DcurrentDir=%cd% -Djava.home=%cd%\jdk\jdk1.5 com.pack.tool.PackageProject 上面这个是一个cs结构的项目启动程序,-cp后面的就是我自己的项目所在目录,他是由appClassLoader负责加载的,最后面的是调用PackageProject中main方法。
chenshuang_com 2012-11-12
  • 打赏
  • 举报
回复
AppClassloader加载工作空间中的项目
zj304292653 2012-11-12
  • 打赏
  • 举报
回复
bootstrap?啥玩意?tomcat并不是jvm。。。jvm加载类简单来说就是通过一个ClassLoader类去指定的Url加载class文件,就是加载类了

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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