前面文章说到了类加载器接下来小编就继续说‘连接、初始化和数据区’。连接分为:验证、准备和识别三个阶段。
![](/upload/ad_content/xuanchuantu-6.jpg)
创新互联长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为南阳企业提供专业的
网站建设、网站设计,
南阳网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
验证——字节码校验器会检查生成的字节码是否正确如果验证失败则会验证错误
准备——对于所有静态变量的内存分配和默认值分配
识别——解析或识别是从运行时常量池的符号引用中动态具体值的过程
初始化
这是类装入的最后阶段,类或接口的初始化由执行类或接口初始化方法构成这里所有的静态变量与原来的值将被指派,静态块将被执行。
运行时数据区
运行时数据区域分为5个主要组件:
方法区——所有的类级别的数据将存储在这里,包括静态变量。每个虚拟机区域只有一个方法它是一个共享资源。一般会包含一个运行时常量池(运行时常量池:一个存储了类文件格式中的常量池表的内存空间这部分空间虽然存在于方法区内,但却在JVM操作中扮演着举足轻重的角色因此JVM规范单独把这一部分拿出来描述。除了每个类或接口中定义的常量它还包含了所有对方法和字段的引用。因此当需要一个方法或字段时JVM通过运行时常量池中的信息从内存空间中来查找其相应的实际地址)。
堆区域——所有的对象和相应的实例变量和数组将存储在这里。还有一堆区域每个虚拟机自方法和堆区域多个线程共享内存,存储的数据不是线程安全的。
名称栏目:浅析JAVA程序运行模式及虚拟机JVM(三)
标题来源:
http://cdkjz.cn/article/cjdssc.html