análise da estrutura de arquivo de classe JVM (flag de acesso, anormal)

1, a bandeira de acesso

(1) conceito

Imediatamente após a constante associação de dois bytes, uma interface para identificar uma hierarquia de classes ou informações de acesso, incluindo a classe ou interface para estar cansado, se o tipo de público, tipo abstrato, classe é declarada final e afins

tabela de bandeira (2) de acesso:

Nome Bandeira Valor Significado 
ACC_PUBLIC     0x0001        se o tipo de público 
ACC_FINAL      0x0010        se declarou final, a classe pode ser fornecido apenas 
ACC_SUPER      0x0020 invokespecial permitir o uso de novas instruções de bytecode semânticas, as instruções sobre a mudança semântica invokespecial no JDK 1.0.2, 
para distinguir esta instrução que utiliza semântica, JDK 1.0 esta bandeira .2 compilado após a classe deve ser verdade ACC_INTERFACE 0x0200 logotipo que é uma interface ACC_ABSTRACT 0x0400 se o tipo abstrato, interface ou classe abstrata para ele, este sinalizador é verdade, a outra classe é falsa ACC_SYNTHETIC 0x1000 identifica a classe não é gerado pelo usuário código ACC_ANNOTATION 0x2000 identifica isto é um comentário ACC_ENUM 0x4000 logotipo que é uma enumeração

(3) as bandeiras de controlo de acesso:

Imediatamente após a parte constante piscina:

 

 

 Combinado com a tabela acima, ele pode ser desenhado é modificado público ver o código fonte:

público  classe Student {
     private String nome;
    privado idade Integer;

(4) Tipo de Índice, índice de interface e o índice de pai

A ordem de: Índice de Classe (u2), o índice de pai (u2) no conjunto de índices de interface (primeiro tipo de interface é contador u2 indica o índice de capacidade da tabela, isto é, implementa várias interfaces, implementado se sem qualquer interface, o valor é zero, este último não ocupam qualquer índice byte interface), arquivos de classe integradas para determinar a relação desta classe com três, se houver uma interface, vai estar por trás da interface.

 

 

 fonte:

público  classe mytest estende Tópico implementos Serializable, Comparável {

estrutura e predefinidos tabela especificação de máquina virtual propriedades (5): Propriedades

O campo estrutura de tabela:

Variáveis ​​usado para descrever a interface ou declarado na classe, incluindo em nível de campo variáveis ​​de nível de classe e variáveis ​​de instância, mas não incluídos nas variáveis ​​locais declaradas dentro do método, nome do campo, por favor, tipos porque o campo é definido não são fixos, portanto, apenas as constantes referências a piscina constante pode ser descrito.

Número Nome Tipo 
U2 access_flags         um especificador de acesso (por exemplo:. 
Pública) U2 name_index           . Um nome de índice (tais como: inc 
é) U2 descriptor_index     1 descritores (por exemplo :()) ----- inc é int pública. 
() U2 attributes_count     1.   
Attribute_info atributos attributes_count

folha de propriedades:

Número Nome Tipo 
U2 attribute_name_index     um nome de atributo índice 
U4 attribute_length     comprimento atributo 1 
u1 Informação attribute_length não igual a 2 + 4 + 1, igual a u2 + u4 + u1 * 190 = 196

VM predefinidos atributos:

Nome do atributo Significado posição de uso 
 de código Código Método Java Tabela é compilado em instruções de bytecode 
 ConstantValue última piscina palavra-chave campo da lista constante definida 
 aulas Reprovados, métodos, campos de tabela é declarada como obsoleto e campo 
 exceções lançadas exceção Métodos Método 
 arquivo de classe EnclosingMethod somente quando uma classe é uma classe parcial ou uma classe pode ter o atributo anônima que identifica a classe onde método periférica 
 InnerClass lista arquivo de classe classe interna 
 números de linhas de código LineNumberTable atributo de código-fonte Java e instrução bytecode um relacionamento correspondência 
 Código LocalVariableTable atributos método lobo será descrita locais 
 atributo Código StackMapTable em JDK1.6 novos atributos para o novo tipo de verificar se as verificações verificador e variáveis locais e um método de destino de processamento operando na classe necessidade corresponde 
 classe Assinatura tabela de tabela de métodos, de campo para apoiar um método genérico no caso da assinatura 
 SourceFile nome do registros do arquivo fonte arquivo de classe 
 arquivo de classe SourceDebugExtension para armazenar informação adicional de depuração 
 Synthetic classes, métodos, tabelas, campos ou métodos de campo flag mesa para o compilador gera automaticamente de
 assinaturas de classe LocalVariableTypeTable em vez de usar o descritor é descrever tipos de parâmetros genéricos é adicionado após a introdução da sintaxe genérica
 tabela método RuntimeVisibleAnnotations classe, tabela de campos de suporte dinâmico anotações 
 tabela RuntimeInvisibleAnnotations, a tabela de método, tabela de campos para os quais a anotação não é visível quando a operação especificada 
 função RuntimeVisibleParameterAnnotation RuntimeVisibleAnnotations método tabela de atributos e semelhante, mas o objecto de papel é um método 
 método tabela RuntimeInvisibleParameterAnnotation RuntimeInvisibleAnnotations propriedades papel semelhante e o papel do objeto ao qual parâmetro do método 
 método AnnotationDefault padrão para gravar uma anotação de elemento com base em tabela 
 arquivos do tipo BootstrapMethods classe guia usados para armazenar instruções de referência eliminatórias invokeddynamic  

O número de variáveis ​​e métodos locais deep stack (6) Método

 

2, anormal

(1) da tabela excepção:

Nome Tipo Quantidade 
start_pc U2        1 
end_pc U2        1 
handle_pc U2       1 
catch_pc U2     1

(2) Exemplo:

00 00 00 04 00 08 00 02 ------ 0 4 8 # 2

A manipulação de exceção é dividido em dois: jogar e tentar .... catch (bloco)

 

salto 0-4 linhas anormal para a linha XVII ... ... 

 

 

 

 resumo:

(1) profundidade da pilha e número:

Deep Stack: pilha

O número de variáveis ​​locais: locals

(2) os parâmetros:

 

Dados que descrevem as classes: (3) Os metadados

(4) Nome da classe: não pode exceder 256

 

Acho que você gosta

Origin www.cnblogs.com/zhai1997/p/12565905.html
Recomendado
Clasificación