java类加载问题

老韩同学 2012-08-10 10:41:34
java类加载器加载类说是分为三个步骤:加载、连接、初始化。加载的描述是将类的字节码文件加载到方法区中,并在堆中生成该类的描述Class实例,我的问题的是,这个时候还没有完成类的字节码文件的验证,如果字节码有错,是不是还要生成Class的实例,如果生成,这个实例能用吗?
...全文
106 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
  • 打赏
  • 举报
回复


虽然连接分为验证 准备 解析,但每个阶段都有一定的字节码验证步骤,就像解析一样,不一定要连接阶段做,可以延迟到使用的时候再做
代码下载链接: https://pan.quark.cn/s/a4b39357ea24 用户账户控制(UAC)白名单的配置 Windows7环境中 UAC(User Account Control,用户帐户控制)是由微软在Windows Vista版本中推出的一项旨在增强系统安全性的创新技术,该技术强制要求用户在执行可能干扰计算机正常运作的操作或进行更改会波及其他用户设置的变动前,必须提供相应的权限或管理员密码进行验证。通过对这些操作启动前进行授权确认,UAC能够有效阻止恶意软件及间谍软件在未获授权的状态下于计算机内进行安装或实施修改。 自从Vista版本问世以来,微软便开始推行这一全新的安全机制,可视为对系统安全防护的显著提升。尽管UAC确实能够在一定程度上对某些非法程序起到防御作用,但与此同时,这一功能也给众多用户带来了诸多不便。 因此,许多用户开始探寻是否存在类似于白名单的功能,以便将那些值得信赖的程序直接赋予运行权限。事实上,这类功能确实存在,不过微软并未将其作为标准配置提供。 网络上关于此问题的绝大多数建议都是建议禁用UAC,这种说法显然缺乏针对性,因为若用户希望禁用此功能,本就不会提出相关疑问。 通过运用微软官方发布的Microsoft Application Compatibility Toolkit 5.6版本,可以将信任的程序纳入系统白名单范畴。 获取Application Compatibility Toolkit 安装程序成功后会出现三个可执行文件 以管理员身份启动Compatibility Administrator 在Custom DataBases部分创建新的数据库,并添加一个Application Fix(在下方空白处点击右键,选择...

62,620

社区成员

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

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