java类加载问题

老韩同学 2012-08-10 10:41:34
java类加载器加载类说是分为三个步骤:加载、连接、初始化。加载的描述是将类的字节码文件加载到方法区中,并在堆中生成该类的描述Class实例,我的问题的是,这个时候还没有完成类的字节码文件的验证,如果字节码有错,是不是还要生成Class的实例,如果生成,这个实例能用吗?
...全文
101 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
老韩同学 2012-08-10
  • 打赏
  • 举报
回复
呵呵,谢谢,看视频开的不明不白的还是看下书吧, 不过这里明白了
龙四 2012-08-10
  • 打赏
  • 举报
回复
验证的内容不一样,有些东西没办法在加载阶段验证

可以看下截图的那本书,章节在图上也有,图没截完

[Quote=引用 9 楼 的回复:]

引用 7 楼 的回复:

上面有图,看图说话

引用 6 楼 的回复:

引用 4 楼 的回复:

生成Class之前会做字节码验证的啊

引用 2 楼 的回复:

我说的是Class对象是在加载的时候就已经生成了,如果此时字节码就有错,以后可以用嘛?


加载阶段做了三件事:
读入字节流
解析数据结构
生成Class对象
没有说要在这里做验证
感……
[/Quote]
老韩同学 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

上面有图,看图说话

引用 6 楼 的回复:

引用 4 楼 的回复:

生成Class之前会做字节码验证的啊

引用 2 楼 的回复:

我说的是Class对象是在加载的时候就已经生成了,如果此时字节码就有错,以后可以用嘛?


加载阶段做了三件事:
读入字节流
解析数据结构
生成Class对象
没有说要在这里做验证
感觉不好理解
[/Quote]

我看了图,看到了加载阶段要验证,还有点不理解的地方是这里验证了,连接阶段的准备还做验证干什么啊?
五哥 2012-08-10
  • 打赏
  • 举报
回复
加载阶段做了三件事:
读入字节流
解析数据结构
生成Class对象


每个阶段都会做验证的 ,好像是要做4趟吧
龙四 2012-08-10
  • 打赏
  • 举报
回复
上面有图,看图说话

[Quote=引用 6 楼 的回复:]

引用 4 楼 的回复:

生成Class之前会做字节码验证的啊

引用 2 楼 的回复:

我说的是Class对象是在加载的时候就已经生成了,如果此时字节码就有错,以后可以用嘛?


加载阶段做了三件事:
读入字节流
解析数据结构
生成Class对象
没有说要在这里做验证
感觉不好理解
[/Quote]
老韩同学 2012-08-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

生成Class之前会做字节码验证的啊

引用 2 楼 的回复:

我说的是Class对象是在加载的时候就已经生成了,如果此时字节码就有错,以后可以用嘛?
[/Quote]

加载阶段做了三件事:
读入字节流
解析数据结构
生成Class对象
没有说要在这里做验证
感觉不好理解
龙四 2012-08-10
  • 打赏
  • 举报
回复
龙四 2012-08-10
  • 打赏
  • 举报
回复
生成Class之前会做字节码验证的啊

[Quote=引用 2 楼 的回复:]

我说的是Class对象是在加载的时候就已经生成了,如果此时字节码就有错,以后可以用嘛?
[/Quote]
Sammie 2012-08-10
  • 打赏
  • 举报
回复
个人理解:

LZ你所说的字节码验证,这个步骤是加载过后的连接中验证子步骤,所以说加载已经完成了,那么已经生成了Class的实例。

至于这个实例是否能用的话,个人认为不可以用。我感觉像有些人面兽心的畜生,虽然是人,但是不能接触。呵呵
老韩同学 2012-08-10
  • 打赏
  • 举报
回复
我说的是Class对象是在加载的时候就已经生成了,如果此时字节码就有错,以后可以用嘛?
龙四 2012-08-10
  • 打赏
  • 举报
回复


虽然连接分为验证 准备 解析,但每个阶段都有一定的字节码验证步骤,就像解析一样,不一定要连接阶段做,可以延迟到使用的时候再做

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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