JVM虚拟机-Class文件之访问标志

简介: JVM虚拟机-Class文件之访问标志

 一、访问标志的概念

常量池结束之后,紧接着的两个字节代表访问标志,这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是接口还是类;是否被定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final等。

access_flages中共有两个字节(16位)可以使用,没有使用到的标志为要求一律为0。如果有多个访问标志,那通过“OR”的方式组合在一起。

二、访问标志具体含义

标志名称  标志值 含义
ACC_PUBLIC 0x00 01 是否为Public类型
ACC_FINAL 0x00 10 是否被声明为final,只有类可以设置
ACC_SUPER 0x00 20 是否允许使用invokespecial字节码指令的新语义.
ACC_INTERFACE 0x02 00 标志这是一个接口
ACC_ABSTRACT 0x04 00 是否为abstract类型,对于接口或者抽象类来说,次标志值为真,其他类型为假
ACC_SYNTHETIC 0x10 00 标志这个类并非由用户代码产生
ACC_ANNOTATION 0x20 00 标志这是一个注解                                                                             
ACC_ENUM            0x40 00 标志这是一个枚举

三、实例分析

案例一

定义一个类:

public class HelloWord {
}

image.gif

image.gif编辑

00 21可以推断是由ACC_PUBLIC和ACC_SUPER通过OR组合而成。

通过命令javap -verbose  HelloWord.class来查看,发现确实是 ACC_PUBLIC, ACC_SUPER组合而成:

image.gif编辑

案例二

定义一个接口:

public interface HelloWord {
}

image.gif

image.gif编辑

06 01又是怎么组合的呢?通过命令javap -verbose  HelloWord.class来查看,发现是 ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT组合而成:

image.gif编辑

参考资料:

    1. Class文件详解_IT_GJW的博客-CSDN博客_class文件是什么
    2. class文件访问标志 - 炎泽 - 博客园
    相关文章
    |
    4月前
    |
    数据库 虚拟化 Windows
    虚拟机数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
    虚拟机数据恢复环境: 某品牌服务器通过同品牌某型号的RAID卡,将4块STAT硬盘为一组RAID10阵列。上层部署XenServer虚拟化平台,虚拟机安装Windows Server系统,每台虚拟机有两个虚拟机磁盘(系统盘 + 数据盘),虚拟机作为Web服务器使用。 虚拟机故障&分析: 机房异常断电导致服务器中一台VPS(XenServer虚拟机)不可用,虚拟磁盘文件丢失。
    |
    4月前
    |
    存储 运维 虚拟化
    虚拟化数据恢复——Hyper-V虚拟化故障导致虚拟机文件丢失的数据恢复案例
    在Windows Server上部署的Hyper-V虚拟化环境中,因存储中虚拟机数据文件丢失导致服务瘫痪。北亚企安数据恢复工程师通过物理检测、操作系统及文件系统检测,确定为人为格式化造成,并通过镜像硬盘、重组RAID、分析并恢复文件索引项等步骤,成功恢复数据,最终在新Hyper-V环境中验证并迁移所有虚拟机,确保用户业务恢复正常运行。
    |
    4月前
    |
    SQL 缓存 Java
    JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)
    这篇文章详细介绍了JVM中类文件的初始化过程、硬件层面的数据一致性问题、缓存行和伪共享、指令乱序执行问题,以及如何通过`volatile`关键字和`synchronized`关键字来保证数据的有序性和可见性。
    60 3
    |
    4月前
    |
    小程序 Oracle Java
    JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
    这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
    78 0
    JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
    |
    4月前
    |
    Linux 测试技术 虚拟化
    解决虚拟机文件因快照占用硬盘空间较多的情况(压缩虚拟机文件,节省硬盘空间)
    解决虚拟机文件因快照占用硬盘空间较多的情况(压缩虚拟机文件,节省硬盘空间)
    273 1
    |
    5月前
    |
    存储 SQL 数据挖掘
    虚拟化数据恢复—VMware虚拟机vmdk文件被误删除的数据恢复案例
    虚拟化数据恢复环境: 某品牌服务器(部署VMware EXSI虚拟机)+同品牌存储(存放虚拟机文件)。 虚拟化故障: 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以外其他配置文件全部丢失,xxx-flat.vmdk磁盘文件和xxx-000001-delta.vmdk快照文件还在。管理员联系VMware工程师寻求帮助。VMware工程师尝试新建一个虚拟机来解决故障,但发现ESXi存储空间不足。于是将故障虚拟机下的xxx-flat.vmdk磁盘文件删除,然后重建一个虚拟机并且分配固定大小的虚拟磁盘。
    |
    6月前
    |
    应用服务中间件 nginx Docker
    本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
    这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
    本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
    |
    4月前
    |
    Kubernetes Linux 容器
    解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
    解决删除快照后启动虚拟机显示指定的文件不是虚拟磁盘 打不开磁盘“路径”或它所依赖的某个快照磁盘。 模块“disk”启动失败。 未能启动虚拟
    328 0
    |
    6月前
    |
    虚拟化
    vmware虚拟机使用主机代理访问谷歌
    vmware虚拟机使用主机代理访问谷歌
    |
    7月前
    |
    SQL 存储 数据库
    虚拟化数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例
    虚拟化数据恢复环境: 某品牌R720服务器,4块STAT硬盘通过H710P阵列卡组建了一组raid10磁盘阵列。服务器上部署XenServer虚拟化平台,虚拟机安装Windows Server系统,作为Web服务器使用,运行SQL Server数据库。共有2个虚拟磁盘:数据盘+系统盘。 虚拟化故障: 机房断电导致XenServer虚拟化平台中一台VPS不可用,XenServer虚拟机磁盘文件丢失。
    虚拟化数据恢复—XenServer虚拟机磁盘文件丢失的数据恢复案例

    热门文章

    最新文章