JVM學習筆記

來源:互聯網
上載者:User

在程式用也有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】。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.