深入Java虚拟机之虚拟机体系结构

发表于:2011-12-30 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨胜寒    来源:51Testing软件测试网采编

分享:

  除了上述基本类型信息,还将保存如下信息:

  ◆ 类型的常量池

  ◆ 字段信息(包括字段名、字段类型、字段修饰符)

  ◆ 方法信息(包括方法名、返回类型、参数的数量和类型、方法修饰符,如果方法不是抽象和本地的,还将保存方法的字节码、操作数栈和该方法栈帧中的局部变量区的大小和异常表)

  ◆ 常量以外的所有类变量(其实就是类的静态变量,因为静态变量是所有实例共享的,且与类型直接相关,所以他们是类一级的变量,作为类的成员被保存在方法区)

  一个到类ClassLoader的引用

  • //返回的就是刚才保存的ClassLoader引用   
  • String.class.getClassLoader();
  •   一个到Class类的引用

  • //将返回刚才保存的Class类的引用   
  • String.class;
  •   注意,方法区也是可以被垃圾回收器回收的。

      堆

      Java程序在运行时创建的所有类实例或数组都放在同一个堆中,而每一个Java虚拟机也是有一个对空间,所有线程共享一个堆(这就是一个多线程的Java程序会产生对象访问的同步问题的原因了)。

      由于每一种Java虚拟机都有对虚拟机规范的不同实现,所以我们可能不知道每一种Java虚拟机在堆中是以何种形式表示对象实例的,不过我们可以通过下面这可能的实现来一窥端倪:

    32/3<123>
    重磅发布,2022软件测试行业现状调查报告~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2023
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号