• 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】。

  • 相关阅读:
    Web HTML 内容改变的触发事件方式
    Delphi Clipboard[2] SetTextBuf、GetTextBuf、AsText 文本操作
    Delphi 绘图TCanvas类[4] TBrush 参数及介绍
    Delphi Clipboard[3] HasFormat、Assign及Image图片的加载
    Delphi WinAPI Window Styles窗体风格
    Delphi Clipboard[1] 剪贴板 介绍
    Delphi WinAPI SetLayeredWindowAttributes设置分层窗口的不透明度和透明度颜色关键点
    C++基础入门
    mysql怎么导入sql文件
    解决ubuntu20.04下vi编辑器方向键和退格键问题
  • 原文地址:https://www.cnblogs.com/ggzwtj/p/2392283.html
Copyright © 2020-2023  润新知