Java虚拟机中,被装载类型的信息存储在一个逻辑上被称为方法区的内存中。

当虚拟机装载某个类型时,它使用类装载器定位相应的class文件

然后读入这个class文件----线行二进制数据流, 然后将它传输到虚拟机中。紧接着虚拟机提取其中的类型信息,并将这信息存储到方法区。该类型的静态变量同样也是存储在方法区。

当虚拟机运行java程序时,它会查找使用存储在方法区中的类型信息,设计者应当为类型信息的内部表示设计适当的数据结构。

由于所有线程都共享方法区,因此它们对方法区数据的访问必须被设计为线程安全的。比如, 假设同时有两个线程都企图去访问一个java类,而这个类还没有被装入虚拟机,那么,这时应该有一个线程去住装载它,而另一个线程等待。

虚拟机通过用户定义的类装载器来动态扩展java程序,因此一些类也会成为程序"不再引用"的类,当某个类变为不再被引用的类时。java虚拟机可以卸载这个类

类的信息: 对于每个装载的类型,虚拟机都会在方法区中存储一下类型的信息

这个类型的全限定名

这个类型的直接超类的权限定名(java.lang.Object e)

这个类型是类还是接口

这个类型的访问修饰符

任何直接超接口的全限定名的有序列表

除了上面列出的基本类型信息外,虚拟机还得为每个被装载的类型存储以下信息

该类型的常量池

字段信息

方法信息

静态变量

一个到类ClassLoader的引用

一个带Class类的引用

常量池  虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用常量的一个有序集合,包括直接常量(string, integer,floating point)对其他类型,字段的方法的符号的引用;

java虚拟机 方法区_java虚拟机---方法区[szx]相关推荐

  1. java虚拟机栈帧_Java虚拟机,运行时栈帧结构

    业余生活要有意义,不要越轨.--华盛顿 引导语 "虚拟机"是一个相对于"物理机"的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器. ...

  2. java虚拟机内存告警_Java虚拟机总结

    JVM体系四大块: 类的加载 JVM内存结构 GC算法 垃圾回收 GC分析 性能调优 执行引擎 JVM架构图 jvm.arch 一.类的加载机制 类的加载 类的加载,将class文件读入方法区,然后在 ...

  3. java 虚拟机的原理_java虚拟机的原理

    所谓虚拟机,就是一台虚拟的机器.它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机,Visual Box .Vmare就属于系统虚拟机.他们完全是对物理计算机的仿真 ...

  4. JAVA虚拟机 安全区域_Java虚拟机的内存区域

    2020年12月10日 阅读 186 关注 Java虚拟机的内存区域 最近在看<深入理解Java虚拟机>,故此写下自己的学习笔记. JVM 运行时数据区域 Java 虚拟机在执行 Java ...

  5. java虚拟机 函数表_java虚拟机的基本结构如图

    1 java虚拟机的基本结构如图: 1)类加载子系统负责从文件系统或者网络中加载Class信息,加载的类信息存放于一块称为方法区的内存空间.除了类的信息外,方法区中可能还会存放运行时常量池信息,包括字 ...

  6. java虚拟机工作原理图_Java虚拟机工作原理

    首先我想从宏观上介绍一下Java虚拟机的工作原理.从最初的我们编写的Java源文件(.java文件)是如何一步步执行的,如下图所示,首先Java源文件经过前端编译器(javac或ECJ)将.java文 ...

  7. java 内存泄露 书籍_java虚拟机内存溢出和泄漏实例

    测试参数设置: 1.循环调用new A()实现堆溢出,java.lang.OutOfMemoryError: Java heap space, 虚拟机参数:-Xms1M -Xmx1M -XX:+Hea ...

  8. java痴和堆_JAVA虚拟机理解 - 爱笑的痴迷者的个人空间 - OSCHINA - 中文开源技术交流社区...

    JVM定义: JVM(Java Virtual Machine),是一种运行Java程序的软件实现,是虚拟的机器.Java程序与平台无关,它直接在虚拟机中运行. JVM运行过程: JVM将内存分划如下 ...

  9. java 虚拟机内存管理_java虚拟机内存管理

    程序计数器: 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器. 程序计数器处于线程独占区 如果线程执行的是Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地 ...

  10. java虚拟机可以处理_Java虚拟机对类加载的处理机制

    类被加载到虚拟机内存开始,到卸载出内存为止,经历了:加载->验证->准备->解析->初始化->使用->卸载 这七个过程 加载 在加载阶段,虚拟机要完成三件事: (1 ...

最新文章

  1. 这38篇原创文章,带我入门深度学习!
  2. MPEG2-TS音视频同步原理
  3. python 树_Python树的概念
  4. 使用hive中beeline引擎来访问hive数据库
  5. 动态调用类 java_Java动态调用类中方法
  6. [Flink] Flink运行报错The number of requested virtual cores for application master
  7. iOS之socket编程
  8. 禁止页面拖拽事件(数据什么的)
  9. GPIO推挽输出和开漏输出模式区别详解
  10. php图片加边框,PHP 给图片加边框
  11. .net 基于wkhtmltopdf插件,Rotativa包在后端根据html代码生成pdf文件
  12. 模板消息接口php代码demo,发送模板API例子
  13. 工业机器人应用编程考核设备
  14. python学习笔记项目_python第三方库之Django学习笔记一
  15. 诙谐术语讲解:热备,冷备,云备,以及IT行业各种备份术语
  16. 那个炒币,8小时赚了一辆法拉利的女大学生,现在怎么样了?
  17. C# winfrom NPOI导出Excel 添加视频、音频文件
  18. 计算机色彩再现原理,清华大学出版社-图书详情-《计算机色彩原理及应用》
  19. vue scroll 监听,点击按钮自动滚动到相应的信息展示
  20. [CTO札记]平台化,多资源整合之道

热门文章

  1. 用c语言实现动态优先权调度,实验四使用动态优先权的进程调度算法的模拟..doc...
  2. 封装获取一个URL地址问号后面传递的参数信息以及哈希值HASH 方法
  3. QPalette类详细使用方法
  4. seurat中报错Error: Cannot add a different number of cells than already present
  5. Simon Knowles:30年做成三家独角兽公司,AI芯片创业的底层逻辑
  6. GitHub简介、fork、pull和clone、快速起步
  7. 自然语言处理相关:英文词性缩写一览表
  8. 印度网站前50名都是做什么的
  9. 中小型局域网上网管理组网方案
  10. 限量50件,属于创作者的、用代码设计的T恤