程序员-张三

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2012年2月20日

摘要: 在java虚拟机中,被装载类型的信息被存储在一个逻辑上称为方法区的内存上。 当虚拟机装载某个类型时,它使用类装载器定位相应的class文件,然后读入这个class中的二进制数据传输到虚拟机中,紧接着虚拟机提取器其中的信息,保护静态变量,保存到方法区中。所有线程共享方法区,因此对方法区数据的访问必须被设计为线程安全的。比如有两个线程去访问一个java类,且这个java类还没有被装载到JVM中,这时就只能一个线程去加载,另一个等待。方法区的不是连续的,且大小是不固定的,JVM会根据应用来调整其大小。方法区允许GC回收。因为JVM允许通过用户自定义的的类装载器来动态的扩展java程序。因此一些cla 阅读全文
posted @ 2012-02-20 17:38 程序员-张三 阅读(134) 评论(0) 推荐(0) 编辑

摘要: 在JVM中负责查找并装载类型的那部分被称为类装载器子系统。java虚拟机中有种类装载器:启动类加载器,和用户自定义加载器 。前者是jvm实现的一部分,后者是java程序的一部分。由不同的类装载器的类将被放在虚拟机内部的不同命名空间。 装载,链接以及初始化 类装载器子系统除了要定位导入二进制class文件外,还必须负责验证被导入类的正确性。为类变量分配并初始化内存,以及帮助解析符号引用。这些动作必须严格按以下顺序进行:1 装载 --查找并装载类型的二进制数据。2 链接 -- 执行验证,准备,以及解析。 验证:确保被导入类的正确性 准备:为类变量分配内存,并将其初始化。解析: 把类型中的符号引用转 阅读全文
posted @ 2012-02-20 16:53 程序员-张三 阅读(180) 评论(0) 推荐(0) 编辑