JVM学习笔记

在程序用也有28效应,也就是20%的代码占用了80%的时间。

方法调用会使优化器的有效性降低,因为优化器在不同的方法调用间不能有效的工作,因此优化器在方法调用的时候就无法专注于代码了。方法调用的频率越高,方法间可以用来优化的代码就越少,优化器就会越低效。

ClassFile表中各项的含义如下:

  1. magic【u4】:0xCAFEBABE,用于辨别是不是Java class文件。
  2. minor_version【u2】:主版本号。
  3. major_version【u2】:次版本号。
  4. constant_pool_count【u2】:常量个数。
  5. constant_pool【cp_info】:常量池。
  6. access_flags【u2】:文件中定义的类或接口的类型。
  7. this_class【u2】:指向常量池中的一项:CONSTANT_Class+name_index(全限定名在常量池中的位置)。
  8. super_class【u2】:除了Object外,其他的该属性都是有效,常量池中保存超累全限定名。
  9. interfaces_count【u2】:父接口的数目。
  10. interfaces【u2】:父接口在常量池中索引。
  11. fields_count【u2】:类变量+实力变量的数目。
  12. fields【field_info】:被编译器加上去的字段用Synthetic属性标识。
  13. methods_count【u2】:声明的所有方法总数。
  14. methods【method_info】:包含方法信息的列表。
  15. attributes_count【u2】:类属性的数目。
  16. attributes【attribute_info】:常量池索引。

常量池中容纳的符号引用包含三种特殊的字符串:全限定名简单名称描述符。当常量池入口指向类或接口时,它们给出该类或者接口的全限定名。字段名和方法名以简单名称形式出现在常量池入口中。字段的描述符给出了字段的类型,方法的描述符给出了方法的返回值和方法参数的数量、类型以及顺序。

字段和方法的描述符由如下所示的上下文无关语法定义:

常量池是一个长度可变的cp_info(tag【u1】+info【un】)表的有序序列。tag的类型如下:

  1. CONSTANT_Utf8_info【UTF-8格式的变体来存储一个常量字符串】,包括:tag+length+bytes;
  2. CONSTANT_Integer_info【常量int类型值】;
  3. CONSTANT_Float_info【常量float类型值】;
  4. CONSTANT_Long_info【常量long类型值】;
  5. CONSTANT_Double_info【常量double类型值】;
  6. CONSTANT_Class_info【引用的类或者接口】,包括:tag+name_index;
  7. CONSTANT_String_info【文字字符串】,包括:tag+string_index;
  8. CONSTANT_Fieldref_info【字段的符号引用】,包括:tag+class_index+name_and_type_index
  9. CONSTANT_Methodref_info【类中方法】,包括:tag+class_index+name_and_type_index;
  10. CONSTANT_InterfaceMethodref_info【接口中方法】,包括:tag+class_index+name_and_type_index;
  11. CONSTANT_NameAndType_info【描述构成字段或方法的符号引用中的一部分,提供了所引用字段或者方法的简单名称和描述符的常量池入口】,包括:tag+name_index+descripter_index

在类或接口中声明的每一个字段都由class文件中的一个名为field_info的可变长表进行描述。field_info表的结构为:access_flags【2】+name_index【2】+descriptor_index【2】+attributes_count【2】+attributes【attributes_count】。

在class文件中,每个在类或接口中声明的方法,或者是有编译器产生的方法,都由可变长度的method_info表来描述。method_info表的格式为:access_flags【2】+name_index【2】+descriptor_index【2】+attributes_count【2】+attributes【attributes_count】。

原文地址:https://www.cnblogs.com/ggzwtj/p/2392283.html