`
李静波
  • 浏览: 53951 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

class的实例在JVM中的内部表示

阅读更多
今天来看一个class的实例在JVM中的内部表示。
先看下面的简图。
 
这是对应的代码。
class instanceKlass: public Klass {
  // ...
 
 protected:
  objArrayOop     _methods;
 
  objArrayOop     _local_interfaces;
 
  typeArrayOop    _fields;
 
  constantPoolOop _constants;
 
  typeArrayOop    _class_annotations;
 
  // ...
};
 
类似的代码还有不少,这里选取了最典型的:方法、接口、字段、常量、Annotation。
因为一个class实例可能会有多个方法(接口、字段、常量、Annotation),所以
objArraryOop、typeArrayOop、constantPoolOop均是“数组”(vector)。
 
下面简单谈谈Oop和Klass之间的关系。
一个class的信息是由Oop和Klass共同来表达。
Oop是一个指针
typedef class oopDesc* oop;
C++ class oopDesc保存了java class的元数据信息,而Klass保存了java class的实际数据。
简单地说,Oop是Klass的元数据。
 
为了表达不同的类型,Oop和Klass各自有对应的派生类。
oop的派生
分享到:
评论
1 楼 funnyone 2017-07-12  

相关推荐

    动态编译字符串成java,并且添加class到jvm

    使用`ToolProvider.getSystemJavaCompiler()`方法可以获取到当前JVM中的Java编译器实例。 2. **构建诊断监听器**: 编译过程中可能产生错误或警告,我们需要一个`DiagnosticListener`来接收这些信息。你可以实现`...

    jvm 加载class文件

    Java程序的运行依赖于类加载器将`.class`文件加载到JVM中,并对其进行验证、准备和解析等步骤,最终使类能够在JVM中执行。 #### 三、Class文件的加载过程 Java类的加载过程主要可以分为以下几个阶段: 1. **加载...

    JVM监控实例数 windows监控 线程测试 单例模式下测试JVM实例是否一个

    在Java开发中,JVM(Java Virtual Machine)是运行所有Java程序的核心,它负责解析字节码并执行。为了确保应用程序高效稳定地运行,开发者需要对JVM进行监控,了解其内部状态,如内存使用、线程活动等。本文将探讨...

    jvm解析编译过的class文件

    在本篇文章中,我们将深入探讨JVM如何处理.class文件,以及相关工具如何帮助我们理解这个过程。 首先,当我们谈论"jvm解析编译过的class文件"时,我们要知道,Java源代码(如TestClass.java)通过Java编译器(javac...

    java 查看JVM中所有的线程的活动状况

    要查看JVM中的线程信息,可以使用`ThreadMXBean`的静态工厂方法`ManagementFactory.getThreadMXBean()`获取实例,然后调用相关方法。以下是一个简单的示例代码(参考文件`ThreadAction.java`): ```java import ...

    JVM实战-JVM类加载机制案例分析

    3. **类的命名空间及运行时包**:类的命名空间是指在JVM中每个类都有唯一的标识符,防止命名冲突。运行时包则是在类加载过程中动态确定的包名,它可能与编译时指定的包名不同。 4. **类的卸载**:当一个类不再被...

    深入JVM内核 - 原理、诊断与优化

    介绍JVM中对多线程锁的实现。 第十课 class文件结构 ASM库介绍 介绍JVM规范中的最重要的内容——Class文件结构,同时介绍ASM库的使用以及对class文件的修改。 第十一课 字节码执行 案例以及javap JIT及相关参数 ...

    生产环境jvm调优的实例代码-jvm.zip

    在生产环境中进行JVM(Java Virtual Machine)调优是确保应用程序高效、稳定运行的关键步骤。JVM调优涉及多个方面,包括内存配置、垃圾收集器选择、线程设置、类加载机制优化等。这里我们将详细探讨这些关键知识点,...

    jdk,jvm源码

    当我们谈论"jdk,jvm源码"时,我们主要关注的是JVM的内部工作机制以及如何通过源码来理解这个过程。 JVM的运行机制主要包括以下几个关键部分: 1. 类加载子系统:负责加载、验证、解析和初始化.class文件。加载阶段...

    JVM

    3. **方法区**:存储类信息、常量、静态变量等,也称为永久代,在现代JVM中通常被元空间(Metaspace)替代。 ### 垃圾收集(Garbage Collection) JVM自动进行内存清理,防止内存泄漏。垃圾收集器主要有串行、并行...

    JVM虚拟机面试

    * 类加载器,在JVM启动时或者类运行时将需要的class加载到JVM中 * 执行引擎,执行引擎的任务是负责执行class文件中包含的字节码指令,相当于实际机器上的CPU * 内存区,将内存划分成若干个区以模拟实际机器上的存储...

    JVM图解-JVM指令-JVM原型图.rar

    在这个压缩包中,"JVM图解.png"可能是对JVM内部结构的可视化表示,"JVM图解"可能是一个详细的文档,解释了JVM的工作原理,而"JVM指令手册 中文版"则提供了JVM可执行的所有指令的详细信息。下面,我们将深入探讨JVM的...

    jvm 详细介绍,了解jvm各个组成部分和功能

    在典型的 JVM 实现中,存在一个简单的 CPU 架构模型,包括以下几个主要部分: - **PC(Program Counter)**:程序计数器,用于记录当前正在执行的指令的位置。 - **Operand Stack Pointer**:操作数栈指针,用于...

    jvm 启动过程 JVM 原理

    在JVM的工作过程中,运行时数据区(也称为Java堆内存)是另一个重要的概念。它分为以下区域: - **堆**:存储所有实例对象和数组。Java垃圾收集器负责管理堆内存,进行对象创建和销毁。 - **栈**:每个线程都有...

    JVM原理.pdf

    冯立全在分享中重点介绍了JVM运行机制,尤其强调了运行时数据区域的布局、Class文件的结构、字节码技术、类加载机制以及垃圾回收算法等核心内容。 运行时数据区域是JVM内存模型的核心,它被划分为若干部分,主要...

Global site tag (gtag.js) - Google Analytics