"Compreensão em profundidade de Java Virtual Machine", terceira edição sexto capítulo resume os principais pontos

Tal como é aqui utilizado apenas como uma lista de revisão

estrutura de classe

1. Os números (1 a 4 bytes) mágica
fixo 0xCOFEBABE
2. número de versão (bytes 5-8)
5,6 Byte: Número uma versão menor, JDK2 ~ JDK12 sido zerada
7,8 bytes : grande número de versão, contando a partir do 45 começando
piscina 3. constante
índice a partir de um
valor de contagem constante piscina 9, 10-byte
, seguido por uma tabela de constantes
4. acesso bandeira
5. índice de classe definida
6. o índice de pai definido
7. interface índice conjunto
tabela conjunto 8. campo
9. O conjunto mesa método

Mais porções são dispostos na ordem
conjunto de tabelas incluídas no conjunto acima de atributos

conteúdos piscina constantes

字面量
符号引用

JAVA símbolo de classe compreendida por referência
constante piscina CCP 17 tipos de tipos, cada tipo é um tag início byte, você identificar o tipo seguido por vários tipos de
tipos de P222 formulários See

bandeira acesso

Esta classe de modificadores (final, público, resumo), tipos (classes, interfaces, anotações, enumerações, módulos, etc.), se gerados por um código do utilizador (o qual pode ser adicionado por JVM), instrução invokespecial se para permitir que
um total de 9 bits Bandeira está disponível, consulte P224

Índice de classe

u2, muitas vezes numa escala ponto, representa um nome de classe completo do
índice de pai, o mesmo índice de interface, mas o índice é uma colecção de interfaces, a interface tem um contador

folha de propriedades

Code属性 记录方法中的数据
Exception 方法抛出的异常(throws)
LineNumberTable 记录指令对应的java行号,非必须
LocalVariableTable 记录参数名,非必须,如果没有,代码调试会无法获取相关参数的值
LocalVariableTypeTable 用于泛型
SourceFile 源码文件名称
SourceDebugExtension 用于帮助非java文件(如jsp)的Debug
ConstantValue 用于static变量的初始化,javac追加限制 :final
InnerClasses  记录内部类与宿主类的关系
Deprecated 布尔属性,表示是否过时
Synthetic 布尔属性,表示是否有编译器自动生成
StackMapTable 用于虚拟机验证字节码
Signature 记录泛型相关信息,便于反射
BootstrapMethods 
MethodParameter 记录方法的各个形参名称和信息
    模块化相关属性
    运行时注解

ranhura variável

JVM menor unidade de alocação de memória usada para as variáveis ​​locais

Método comprimento de código de classe

Não mais de 65.535 instruções

mesa de exceção

P237

Acho que você gosta

Origin www.cnblogs.com/ZGQblogs/p/12584518.html
Recomendado
Clasificación