日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JVM实战与原理---Class文件结构

發(fā)布時(shí)間:2025/3/12 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM实战与原理---Class文件结构 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JVM實(shí)戰(zhàn)與原理


目錄

Class文件結(jié)構(gòu)

1. 數(shù)據(jù)結(jié)構(gòu)

2. class文件結(jié)構(gòu)詳解

2.1 魔數(shù)與Class文件的版本

2.2 常量池

2.3 訪問標(biāo)志

2.4 類索引、父類索引與接口索引集合

2.5 字段表集合

2.6 方法表集合

2.7?屬性表集合


Class文件結(jié)構(gòu)

章節(jié)目的:介紹class文件的結(jié)構(gòu)


引言:當(dāng)使用javac命令對(duì)java文件進(jìn)行編譯后,便生成了Class文件,那么Class文件的結(jié)構(gòu)是怎么樣的呢?

下面是Class文件結(jié)構(gòu)的介紹。

1. 數(shù)據(jù)結(jié)構(gòu)

首先,我們需要知道Class文件的數(shù)據(jù)結(jié)構(gòu)如下,其中u1、u2、u4分別代表1個(gè)字節(jié)、2個(gè)字節(jié)、4個(gè)字節(jié),info結(jié)尾的代表一個(gè)復(fù)合結(jié)構(gòu)的數(shù)據(jù)

ClassFile {u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[constant_pool_count-1];u2 access_flags;u2 this_class;u2 super_class;u2 interfaces_count;u2 interfaces[interfaces_count];u2 fields_count;field_info fields[fields_count];u2 methods_count;method_info methods[methods_count];u2 attributes_count;attribute_info attributes[attributes_count]; }

2. class文件結(jié)構(gòu)詳解

接著,我們繼續(xù)通過以下這段java代碼來(lái)分析

class Person {private static String name = "wenxl";public static void main(String[] args) {System.out.println(name);} }

對(duì)于已經(jīng)編譯生成了class文件,此時(shí)將class文件通過winHex打開,會(huì)有如下十六進(jìn)制的字節(jié)碼,例如首個(gè)CA就為一個(gè)字節(jié),即為u1。

Offset 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1500000000 CA FE BA BE 00 00 00 34 00 22 0A 00 07 00 13 09 漱壕 4 " 00000016 00 14 00 15 09 00 06 00 16 0A 00 17 00 18 08 00 00000032 19 07 00 1A 07 00 1B 01 00 04 6E 61 6D 65 01 00 name 00000048 12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 Ljava/lang/Stri 00000064 6E 67 3B 01 00 06 3C 69 6E 69 74 3E 01 00 03 28 ng; <init> ( 00000080 29 56 01 00 04 43 6F 64 65 01 00 0F 4C 69 6E 65 )V Code Line 00000096 4E 75 6D 62 65 72 54 61 62 6C 65 01 00 04 6D 61 NumberTable ma 00000112 69 6E 01 00 16 28 5B 4C 6A 61 76 61 2F 6C 61 6E in ([Ljava/lan 00000128 67 2F 53 74 72 69 6E 67 3B 29 56 01 00 08 3C 63 g/String;)V <c 00000144 6C 69 6E 69 74 3E 01 00 0A 53 6F 75 72 63 65 46 linit> SourceF 00000160 69 6C 65 01 00 0B 50 65 72 73 6F 6E 2E 6A 61 76 ile Person.jav 00000176 61 0C 00 0A 00 0B 07 00 1C 0C 00 1D 00 1E 0C 00 a 00000192 08 00 09 07 00 1F 0C 00 20 00 21 01 00 05 77 65 ! we 00000208 6E 78 6C 01 00 06 50 65 72 73 6F 6E 01 00 10 6A nxl Person j 00000224 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 01 ava/lang/Object 00000240 00 10 6A 61 76 61 2F 6C 61 6E 67 2F 53 79 73 74 java/lang/Syst 00000256 65 6D 01 00 03 6F 75 74 01 00 15 4C 6A 61 76 61 em out Ljava 00000272 2F 69 6F 2F 50 72 69 6E 74 53 74 72 65 61 6D 3B /io/PrintStream; 00000288 01 00 13 6A 61 76 61 2F 69 6F 2F 50 72 69 6E 74 java/io/Print 00000304 53 74 72 65 61 6D 01 00 07 70 72 69 6E 74 6C 6E Stream println 00000320 01 00 15 28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 (Ljava/lang/S 00000336 74 72 69 6E 67 3B 29 56 00 20 00 06 00 07 00 00 tring;)V 00000352 00 01 00 0A 00 08 00 09 00 00 00 03 00 00 00 0A 00000368 00 0B 00 01 00 0C 00 00 00 1D 00 01 00 01 00 00 00000384 00 05 2A B7 00 01 B1 00 00 00 01 00 0D 00 00 00 *? ? 00000400 06 00 01 00 00 00 01 00 09 00 0E 00 0F 00 01 00 00000416 0C 00 00 00 26 00 02 00 01 00 00 00 0A B2 00 02 & ? 00000432 B2 00 03 B6 00 04 B1 00 00 00 01 00 0D 00 00 00 ? ? ? 00000448 0A 00 02 00 00 00 06 00 09 00 07 00 08 00 10 00 00000464 0B 00 01 00 0C 00 00 00 1E 00 01 00 00 00 00 00 00000480 06 12 05 B3 00 03 B1 00 00 00 01 00 0D 00 00 00 ? ? 00000496 06 00 01 00 00 00 03 00 01 00 11 00 00 00 02 00 00000512 12

2.1 魔數(shù)與Class文件的版本

ClassFile {u4 magic;u2 minor_version;u2 major_version;....... }

對(duì)應(yīng)的字節(jié)碼為:CA FE BA BE 00 00 00 34

作用:每個(gè)Class文件的頭4個(gè)字節(jié)稱為魔數(shù)magic,作用是確定這個(gè)文件是否為JVM能接受的Clcass文件,固定為0xCAFEBABE。

后4字節(jié)說明Class文件的版本

字節(jié)碼詳解:00 00 00 34 說明該文件版本為JDK1.8。

2.2 常量池

ClassFile {.......u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1];....... }

對(duì)應(yīng)的字節(jié)碼為:00 22

作用:前兩個(gè)字節(jié)說明常量池的數(shù)量,后面則是常量池內(nèi)容。常量池可以理解是Class文件的資源倉(cāng)庫(kù)。

字節(jié)碼詳解:其中前兩個(gè)字節(jié)0x0022轉(zhuǎn)換為十進(jìn)制為34,說明有33個(gè)常量

cp_info常量類型的數(shù)據(jù)結(jié)構(gòu)為

cp_info {u1 tag; u1 info[]; }

其中tag的值代表當(dāng)前常量屬于那種常量類型

Tag Value

Constant Type

DESCDATA STRUCTURE
1CONSTANT_Utf8utf-8編碼的字符串CONSTANT_Utf8_info {
??? u1 tag;
??? u2 length;
??? u1 bytes[length];
}
3CONSTANT_Integer整形CONSTANT_Integer_info {
??? u1 tag;
??? u4 bytes;
}
4CONSTANT_Float浮點(diǎn)型CONSTANT_Float_info {
??? u1 tag;
??? u4 bytes;
}
5CONSTANT_Long長(zhǎng)整形CONSTANT_Long_info {
??? u1 tag;
??? u4 high_bytes;
??? u4 low_bytes;
}
6CONSTANT_Double雙精度浮點(diǎn)型CONSTANT_Double_info {
??? u1 tag;
??? u4 high_bytes;
??? u4 low_bytes;
}
7CONSTANT_Class類或接口的符號(hào)引用CONSTANT_Class_info {
??? u1 tag;
??? u2 name_index;
}
8CONSTANT_String字符串類型CONSTANT_String_info {
??? u1 tag;
??? u2 string_index;
}
9CONSTANT_Fieldref字段的符號(hào)引用CONSTANT_Fieldref_info {
??? u1 tag;
??? u2 class_index;
??? u2 name_and_type_index;
}
10CONSTANT_Methodref類中方法的符號(hào)引用CONSTANT_Methodref_info {
??? u1 tag;
??? u2 class_index;
??? u2 name_and_type_index;
}
11CONSTANT_InterfaceMethodref接口中方法的符號(hào)引用CONSTANT_InterfaceMethodref_info {
??? u1 tag;
??? u2 class_index;
??? u2 name_and_type_index;
}
12CONSTANT_NameAndType字段或方法的部分符號(hào)引用CONSTANT_NameAndType_info {
??? u1 tag;
??? u2 name_index;
??? u2 descriptor_index;
}
15CONSTANT_MethodHandle表示方法句柄CONSTANT_MethodHandle_info {
??? u1 tag;
??? u1 reference_kind;
??? u2 reference_index;
}
16CONSTANT_MethodType標(biāo)識(shí)方法類型CONSTANT_MethodType_info {
??? u1 tag;
??? u2 descriptor_index;
}
18CONSTANT_InvokeDynamic表示一個(gè)動(dòng)態(tài)方法調(diào)用點(diǎn)CONSTANT_InvokeDynamic_info {
??? u1 tag;
??? u2 bootstrap_method_attr_index;
??? u2 name_and_type_index;
}

我們按字節(jié)順序開始分析,第一個(gè)tag值為0x0A,對(duì)應(yīng)常量類型為CONSTANT_Methodref,其結(jié)構(gòu)為

CONSTANT_Methodref_info {u1 tag;u2 class_index;u2 name_and_type_index; }

對(duì)應(yīng)的字節(jié)碼為

0A00 0700?13

0007為class_index指向一個(gè)CONSTANT_Class_info

0013為name_and_type_index指向一個(gè)CONSTANT_NameAndType

那指向的這兩個(gè)又是什么呢?我們往下繼續(xù)分析

第二個(gè)tag值為0x09,對(duì)應(yīng)常量類型為CONSTANT_Fieldref,其結(jié)構(gòu)為

CONSTANT_Fieldref_info {u1 tag;u2 class_index;u2 name_and_type_index; }

對(duì)應(yīng)的字節(jié)碼為

0900 1400 15

0014為class_index指向一個(gè)CONSTANT_Class_info

0015為name_and_type_index指向一個(gè)CONSTANT_NameAndType

我們按這樣的邏輯將常量池字 節(jié)碼解析為

IndexTagInfoTag Value
10A0007 0013CONSTANT_Methodref
2090014 0015CONSTANT_Fieldref
3090006 0016CONSTANT_Fieldref
40A0017 0018CONSTANT_Methodref
5080019CONSTANT_String
607001ACONSTANT_Class
707001BCONSTANT_Class
8010004 6E6D 6561CONSTANT_Utf8
9010012 4C.. ..3BCONSTANT_Utf8
10010006 3C.. ..3ECONSTANT_Utf8
11010003 2829 56CONSTANT_Utf8
12010004 436F 6465CONSTANT_Utf8
1301000F 4C.. ..65CONSTANT_Utf8
14010004 6D61 696ECONSTANT_Utf8
15010016 28.. ..56CONSTANT_Utf8
16010008 3C.. ..3ECONSTANT_Utf8
1701000A 53.. ..65CONSTANT_Utf8
1801000B 50.. ..61CONSTANT_Utf8
190C000A 000BCONSTANT_NameAndType
2007001CCONSTANT_Class
210C001D 001ECONSTANT_NameAndType
220C0008 0009CONSTANT_NameAndType
2307001FCONSTANT_Class
240C0020 0021CONSTANT_NameAndType
2501?0005 77.. ..6CCONSTANT_Utf8
2601?0006 50.. ..6ECONSTANT_Utf8
2701?0010 6A.. ..74CONSTANT_Utf8
2801?0010 6A.. ..6DCONSTANT_Utf8
2901?0003 6F75 74CONSTANT_Utf8
3001?0015 4C.. ..3BCONSTANT_Utf8
3101?0013 6A.. ..6DCONSTANT_Utf8
3201?0007 70.. ..6ECONSTANT_Utf8
3301?0015 28.. ..56CONSTANT_Utf8

這時(shí)我們?cè)倩氐降谝粋€(gè)CONSTANT_Methodref,該常量用來(lái)描述的方法,其中

0007為class_index指向一個(gè)CONSTANT_Class_info,說明是哪個(gè)類的方法

0013為name_and_type_index指向一個(gè)CONSTANT_NameAndType,說明的是這個(gè)方法的方法名與方法的入?yún)⒓胺祷刂殿愋?/p>

0007即index為7的常量,我們可以看到是

707001BCONSTANT_Class

CONSTANT_Class的結(jié)構(gòu)為

CONSTANT_Class_info {u1 tag;u2 name_index; }

同理,index為001B的即第27個(gè)常量是

2701?0010 6A.. ..74CONSTANT_Utf8

CONSTANT_Utf8的結(jié)構(gòu)為

CONSTANT_Utf8_info {u1 tag;u2 length;u1 bytes[length]; }

length為0010,即后面跟著長(zhǎng)度為16的字符串,6A.. ..74轉(zhuǎn)換為對(duì)應(yīng)的字符串為java/lang/Object,說明調(diào)用的是java/lang/Object的方法

同樣,0013指向第19個(gè)常量,是個(gè)CONSTANT_NameAndType_info

190C000A 000BCONSTANT_NameAndType

結(jié)構(gòu)如下

CONSTANT_NameAndType_info {u1 tag;u2 name_index;u2 descriptor_index; }

000A指向第10個(gè)常量,轉(zhuǎn)換為對(duì)應(yīng)的字符串為<init>,說明方法名為<init>

10010006 3C.. ..3ECONSTANT_Utf8

000B指向第11個(gè)常量,轉(zhuǎn)換為對(duì)應(yīng)的字符串為()V,說明入?yún)榭?#xff0c;返回值類型是void。

?

我們可以用javap -verbose Person的命令反編譯,就可以得到j(luò)avap工具幫我們解析的字節(jié)碼描述,我們發(fā)現(xiàn)其中Constant pool部分與我們分析出的結(jié)果是一致的。

Classfile /D:/用戶目錄/我的文檔/Code/JVMSearch/Person.classLast modified 2020-12-19; size 513 bytesMD5 checksum dea507ac0ecc8c9063c778c6f748a2bbCompiled from "Person.java" class Personminor version: 0major version: 52flags: ACC_SUPER Constant pool:#1 = Methodref #7.#19 // java/lang/Object."<init>":()V#2 = Fieldref #20.#21 // java/lang/System.out:Ljava/io/PrintStream;#3 = Fieldref #6.#22 // Person.name:Ljava/lang/String;#4 = Methodref #23.#24 // java/io/PrintStream.println:(Ljava/lang/String;)V#5 = String #25 // wenxl#6 = Class #26 // Person#7 = Class #27 // java/lang/Object#8 = Utf8 name#9 = Utf8 Ljava/lang/String;#10 = Utf8 <init>#11 = Utf8 ()V#12 = Utf8 Code#13 = Utf8 LineNumberTable#14 = Utf8 main#15 = Utf8 ([Ljava/lang/String;)V#16 = Utf8 <clinit>#17 = Utf8 SourceFile#18 = Utf8 Person.java#19 = NameAndType #10:#11 // "<init>":()V#20 = Class #28 // java/lang/System#21 = NameAndType #29:#30 // out:Ljava/io/PrintStream;#22 = NameAndType #8:#9 // name:Ljava/lang/String;#23 = Class #31 // java/io/PrintStream#24 = NameAndType #32:#33 // println:(Ljava/lang/String;)V#25 = Utf8 wenxl#26 = Utf8 Person#27 = Utf8 java/lang/Object#28 = Utf8 java/lang/System#29 = Utf8 out#30 = Utf8 Ljava/io/PrintStream;#31 = Utf8 java/io/PrintStream#32 = Utf8 println#33 = Utf8 (Ljava/lang/String;)V {Person();descriptor: ()Vflags:Code:stack=1, locals=1, args_size=10: aload_01: invokespecial #1 // Method java/lang/Object."<init>":()V4: returnLineNumberTable:line 1: 0public static void main(java.lang.String[]);descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=1, args_size=10: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;3: getstatic #3 // Field name:Ljava/lang/String;6: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V9: returnLineNumberTable:line 6: 0line 7: 9static {};descriptor: ()Vflags: ACC_STATICCode:stack=1, locals=0, args_size=00: ldc #5 // String wenxl2: putstatic #3 // Field name:Ljava/lang/String;5: returnLineNumberTable:line 3: 0 } SourceFile: "Person.java"

2.3 訪問標(biāo)志

ClassFile {.......u2 access_flags;....... }

對(duì)應(yīng)的字節(jié)碼為:00 20

作用:用于識(shí)別類或者接口層次的訪問信息

字節(jié)碼詳解:每個(gè)位所代表的意義如下表,因?yàn)樵擃愂荍DK1.2之后的編譯器進(jìn)行編譯,且其他標(biāo)識(shí)均為0,故為00 20。大家可以試試在類被聲明為public,abstract,final的情況下,字節(jié)碼是如何展示的。

Flag NameValueInterpretation
ACC_PUBLIC0x0001是否為public類型
ACC_FINAL0x0010是否被聲明為final,只有類可設(shè)置
ACC_SUPER0x0020是否允許使用invokespecial字節(jié)碼指令的新語(yǔ)意,JDK1.0.2該指令語(yǔ)意發(fā)生改變,故JDK1.0.2后該標(biāo)志都為真
ACC_INTERFACE0x0200標(biāo)識(shí)這是一個(gè)接口
ACC_ABSTRACT0x0400是否為abstract類型
ACC_SYNTHETIC0x1000標(biāo)識(shí)這個(gè)類并非由用戶代碼產(chǎn)生
ACC_ANNOTATION0x2000標(biāo)識(shí)這是一個(gè)注解
ACC_ENUM0x4000標(biāo)識(shí)這是一個(gè)枚舉

2.4 類索引、父類索引與接口索引集合

ClassFile {.......u2 this_class;u2 super_class;u2 interfaces_count;u2 interfaces[interfaces_count];....... }

對(duì)應(yīng)的字節(jié)碼為:00 06 00 07 00 00

作用:這三項(xiàng)數(shù)據(jù)確定了這個(gè)類的繼承關(guān)系,類索引(this_class)確定類的全限定名,父類索引(super_class)確定類的父類的全限定名,接口索引集合(interfaces)描述類實(shí)現(xiàn)了哪些接口

字節(jié)碼詳解:00 06指向常量池第6個(gè)常量,類型為CONSTACT_Class_info,值為Person。

00 07同樣類型為CONSTACT_Class_info,值為java/lang/Object。

00 00說明該類沒實(shí)現(xiàn)任何接口。好奇的同學(xué)可以試試實(shí)現(xiàn)了接口后,這里的字節(jié)碼是如何展示的。

2.5 字段表集合

ClassFile {.......u2 fields_count;field_info fields[fields_count];....... }

對(duì)應(yīng)的字節(jié)碼為:00 01?00 0A?00 08 00 09?00 00

作用:描述接口或者類中的聲明的變量。

字節(jié)碼詳解:

其中前兩個(gè)字節(jié)0x0001轉(zhuǎn)換為十進(jìn)制為1,說明有1個(gè)字段。

field_info常量類型的數(shù)據(jù)結(jié)構(gòu)為

field_info {u2 access_flags;u2 name_index;u2 descriptor_index;u2 attributes_count;attribute_info attributes[attributes_count]; }

access_flag為字段訪問標(biāo)志,含義表如下。字節(jié)碼為00 0A,說明ACC_PRIVATE和ACC_STATIC為真,即該字段為private和static

Flag NameValueInterpretation
ACC_PUBLIC0x0001字段是否public
ACC_PRIVATE0x0002字段是否private
ACC_PROTECTED0x0004字段是否protected
ACC_STATIC0x0008字段是否static
ACC_FINAL0x0010字段是否final
ACC_VOLATILE0x0040字段是否volatile
ACC_TRANSIENT0x0080字段是否transient
ACC_SYNTHETIC0x1000字段是否由編譯器自動(dòng)產(chǎn)生的
ACC_ENUM0x4000字段是否enum

name_index代表字段的簡(jiǎn)單名稱,descriptor_index代表字段和方法的描述符。

字節(jié)碼為00 08 00 09,指向常量池第8和第9個(gè)常量,類型為CONSTACT_Utf8_info,值分別為name和Ljava/lang/String;。

說明該字段名為name,描述符為java/lang/String。

attribute_info則是該字段的屬性表,字節(jié)碼為00 00, 說明沒有屬性。

2.6 方法表集合

ClassFile {.......u2 methods_count;method_info methods[methods_count];....... }

對(duì)應(yīng)的字節(jié)碼為:00 03?00 00?00 0A 00 0B 00 01

作用:描述接口或者類中的方法。

字節(jié)碼詳解:

其中前兩個(gè)字節(jié)0x0003轉(zhuǎn)換為十進(jìn)制為3,說明有3個(gè)方法。

method_info常量類型的數(shù)據(jù)結(jié)構(gòu)為

method_info {u2 access_flags;u2 name_index;u2 descriptor_index;u2 attributes_count;attribute_info attributes[attributes_count]; }

access_flag為字段訪問標(biāo)志,含義表如下。字節(jié)碼為00 00,說明標(biāo)志均為假

Flag NameValueInterpretation
ACC_PUBLIC0x0001方法是否public
ACC_PRIVATE0x0002方法是否private
ACC_PROTECTED0x0004方法是否protected
ACC_STATIC0x0008方法是否static
ACC_FINAL0x0010方法是否final
ACC_SYNCHRONIZED0x0020方法是否synchronized
ACC_BRIDGE0x0040方法是否是由編譯器產(chǎn)生的橋接方法
ACC_VARARGS0x0080方法是否接受不定參數(shù)
ACC_NATIVE0x0100方法是否native
ACC_ABSTRACT0x0400方法是否abstract
ACC_STRICT0x0800方法是否strictfp
ACC_SYNTHETIC0x1000方法是否是由編譯器自動(dòng)產(chǎn)生的

字節(jié)碼為00 0A 00 0B,指向常量池第10和第11個(gè)常量,類型為CONSTACT_Utf8_info,值分別為<init>和()V。name_index代表方法名,descriptor_index代表方法的描述符。

說明該方法名為<init>,描述符為()V。

attribute_info則是該字段的屬性表,那么屬性表是什么樣的結(jié)構(gòu)呢。

2.7?屬性表集合

ClassFile {u2 attributes_count;attribute_info attributes[attributes_count];....... }

對(duì)應(yīng)的字節(jié)碼為:00 01?00 0C?00 00 00 1D

作用:Class文件、字段表、方法表都可以攜帶自己的屬性表集合,用于描述某些場(chǎng)景專有的信息

字節(jié)碼詳解:

其中前兩個(gè)字節(jié)0x0001轉(zhuǎn)換為十進(jìn)制為1,說明有1個(gè)屬性。

attribute_info常量類型的數(shù)據(jù)結(jié)構(gòu)為

attribute_info {u2 attribute_name_index;u4 attribute_length;u1 info[attribute_length]; }

attribute_name_index為屬性名。字節(jié)碼為00 0C,指向常量池第12個(gè)常量,類型為CONSTACT_Utf8_info,值為Code,說明這是一個(gè)Code屬性。

00 00 00 1D說明后面屬性內(nèi)容的長(zhǎng)度,1D為十進(jìn)制的29,說明后面29個(gè)字節(jié)的內(nèi)容為屬性內(nèi)容。那么這個(gè)Code屬性的屬性作用和結(jié)構(gòu)內(nèi)容是怎么樣的呢?

Code屬性作用:方法中的代碼經(jīng)過編譯器變?yōu)榈淖止?jié)碼指令,存儲(chǔ)在Code屬性內(nèi)。
Code屬性表結(jié)構(gòu)

Code_attribute {u2 attribute_name_index;u4 attribute_length;u2 max_stack;u2 max_locals;u4 code_length;u1 code[code_length];u2 exception_table_length;{ u2 start_pc;u2 end_pc;u2 handler_pc;u2 catch_type;} exception_table[exception_table_length];u2 attributes_count;attribute_info attributes[attributes_count]; }

字節(jié)碼詳解:00 01 00 01 00 00 00 05 2A B7 00 01 B1 00 00 00 01?00 0D

這里從max_stack開始,max_stack描述了操作數(shù)棧深度的最大值,這里是00 01說明最大值為1

max_locals描述了局部變量表所需的存儲(chǔ)空間,單位是Slot,對(duì)于double和long這兩種64位的需要兩個(gè)Slot存放,其余的byte、char、float、int、short、boolean和returnAddress等長(zhǎng)度不超過32位的則用1個(gè)Slot存放。

Slot可以被重用,當(dāng)代碼執(zhí)行超過局部變量的作用域,該變量占用的Slot可以被其他Slot占用,所以max_locals不等于方法用到了多少個(gè)局部變量,而是編譯器根據(jù)變量的作用域計(jì)算出max_locals的大小。

code_length和code存儲(chǔ)Java源程序編譯后生成的字節(jié)碼指令,code_length為00 05,說明后面有5個(gè)字節(jié)為字節(jié)碼指令,為2A B7 00 01 B1,根據(jù)指令表,2A對(duì)應(yīng)指令為aload_0,含義是將第0個(gè)Slot中為reference類型的本地變量推送到操作數(shù)棧頂;B7對(duì)應(yīng)指令為invokespecial,作用是以棧頂?shù)膔eference類型的數(shù)據(jù)所指向的對(duì)象作為方法接收者,調(diào)用對(duì)象的實(shí)例構(gòu)造方法,后跟兩個(gè)字節(jié)是他的參數(shù),說明調(diào)用哪一個(gè)方法;00 01是參數(shù),指向常量池第1個(gè)常量,類型為CONSTACT_Methodref_info,值為java/lang/Object."<init>":()V;B1對(duì)應(yīng)指令為return,含義是返回此方法,且返回值為void,執(zhí)行該條指令后,方法結(jié)束。

exception_table用于實(shí)現(xiàn)Java一場(chǎng)及finally處理機(jī)制,00 00說明定義了0個(gè)異常。

最后的是attribute_info,說明Code屬性的屬性,00 01說明有1個(gè)屬性,結(jié)構(gòu)是一樣的。

字節(jié)碼為00 0D,指向常量池第13個(gè)常量,類型為CONSTACT_Utf8_info,值為L(zhǎng)ineNumberTable,說明這是一個(gè)LineNumberTable屬性。

LineNumberTable屬性作用:描述Java源碼行號(hào)與字節(jié)碼行號(hào)之間的對(duì)應(yīng)關(guān)系
LineNumberTable屬性表結(jié)構(gòu)

LineNumberTable_attribute {u2 attribute_name_index;u4 attribute_length;u2 line_number_table_length;{ u2 start_pc;u2 line_number; } line_number_table[line_number_table_length]; }

字節(jié)碼詳解:00 00 00 06 00 01 00?00 00 01

00 00 00 06說明后面6個(gè)字節(jié)為屬性描述。

line_number_table_length說明line_number_table長(zhǎng)度,00 01說明后續(xù)有1個(gè)line_number_table_length。

line_number_table包含兩個(gè)數(shù)據(jù)項(xiàng),其中start_pc是字節(jié)碼行號(hào),line_number是Java源碼行號(hào)。

00?00 00 01說明行號(hào)數(shù)據(jù)是0:1。

還有很多屬性,如下。

每個(gè)屬性都有不同的結(jié)構(gòu)及作用,讀者可以自行修改源碼,從而發(fā)現(xiàn)不同的屬性。

屬性名稱使用位置含義
Code?方法表Java代碼編譯成的字節(jié)碼指令
ConstantValue字段表final關(guān)鍵字定義的常量值
Deprecated類、方法表、字段表被聲明為deprecated的方法和字段
Exceptions方法表方法拋出的異常
EnclosingMethod類文件僅當(dāng)一個(gè)類為局部類或者匿名類時(shí)才能擁有這個(gè)屬性,這個(gè)屬性用于標(biāo)識(shí)這個(gè)類所在的外圍方法
InnerClasses類文件內(nèi)部類列表
LineNumberTableCode屬性Java源碼的行號(hào)與字節(jié)碼指令的對(duì)應(yīng)關(guān)系
LocalVariableTableCode屬性方法的局部變量描述
StackMapTableCode屬性JDK1.6新增屬性,供新的類型檢查驗(yàn)證器檢查和處理目標(biāo)方法的局部變量和操作數(shù)棧所需要的類型是否匹配
Signature類、方法表、字段表用于支持泛型情況下的方法簽名
SourceFile類文件記錄源文件名稱
SourceDebugExtension類文件存儲(chǔ)額外的調(diào)試信息
Synthetic類、方法表、字段表標(biāo)識(shí)方法或字段為編譯器自動(dòng)生成的
LocalVariableTypeTable使用特征簽名代替描述符,是為了引入泛型語(yǔ)法之后能描述泛型參數(shù)化類型而添加
RuntimeVisibleAnnotations類、方法表、字段表為動(dòng)態(tài)注解提供支持,指明哪些注解是運(yùn)行時(shí)可見的
RuntimeInvisibleAnnotations類、方法表、字段表指明哪些注解是運(yùn)行時(shí)不可見的
RuntimeVisibleParameterAnnotations方法表與RuntimeVisibleAnnotations類似,作用對(duì)象為方法參數(shù)
RuntimeInvisibleParameterAnnotations方法表與RuntimeInvisibleAnnotations類似,作用對(duì)象為方法參數(shù)
AnootationDefault方法表記錄注解類元素的默認(rèn)值
BootstrapMethods類文件保存invokedynamic指令引用的引導(dǎo)方法限定符

后面的字節(jié)碼也無(wú)需在分析下去了,后面還有兩個(gè)方法,一個(gè)屬性,按照這個(gè)結(jié)構(gòu)繼續(xù)解析下去,就可以發(fā)現(xiàn),跟javap反編譯出來(lái)的描述是一致的。

Classfile /D:/用戶目錄/我的文檔/Code/JVMSearch/Person.classLast modified 2020-12-19; size 513 bytesMD5 checksum dea507ac0ecc8c9063c778c6f748a2bbCompiled from "Person.java" class Personminor version: 0major version: 52flags: ACC_SUPER Constant pool:#1 = Methodref #7.#19 // java/lang/Object."<init>":()V#2 = Fieldref #20.#21 // java/lang/System.out:Ljava/io/PrintStream;#3 = Fieldref #6.#22 // Person.name:Ljava/lang/String;#4 = Methodref #23.#24 // java/io/PrintStream.println:(Ljava/lang/String;)V#5 = String #25 // wenxl#6 = Class #26 // Person#7 = Class #27 // java/lang/Object#8 = Utf8 name#9 = Utf8 Ljava/lang/String;#10 = Utf8 <init>#11 = Utf8 ()V#12 = Utf8 Code#13 = Utf8 LineNumberTable#14 = Utf8 main#15 = Utf8 ([Ljava/lang/String;)V#16 = Utf8 <clinit>#17 = Utf8 SourceFile#18 = Utf8 Person.java#19 = NameAndType #10:#11 // "<init>":()V#20 = Class #28 // java/lang/System#21 = NameAndType #29:#30 // out:Ljava/io/PrintStream;#22 = NameAndType #8:#9 // name:Ljava/lang/String;#23 = Class #31 // java/io/PrintStream#24 = NameAndType #32:#33 // println:(Ljava/lang/String;)V#25 = Utf8 wenxl#26 = Utf8 Person#27 = Utf8 java/lang/Object#28 = Utf8 java/lang/System#29 = Utf8 out#30 = Utf8 Ljava/io/PrintStream;#31 = Utf8 java/io/PrintStream#32 = Utf8 println#33 = Utf8 (Ljava/lang/String;)V {Person();descriptor: ()Vflags:Code:stack=1, locals=1, args_size=10: aload_01: invokespecial #1 // Method java/lang/Object."<init>":()V4: returnLineNumberTable:line 1: 0public static void main(java.lang.String[]);descriptor: ([Ljava/lang/String;)Vflags: ACC_PUBLIC, ACC_STATICCode:stack=2, locals=1, args_size=10: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream;3: getstatic #3 // Field name:Ljava/lang/String;6: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V9: returnLineNumberTable:line 6: 0line 7: 9static {};descriptor: ()Vflags: ACC_STATICCode:stack=1, locals=0, args_size=00: ldc #5 // String wenxl2: putstatic #3 // Field name:Ljava/lang/String;5: returnLineNumberTable:line 3: 0 } SourceFile: "Person.java"

?

總結(jié)

以上是生活随笔為你收集整理的JVM实战与原理---Class文件结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

在线观看精品一区 | 久久精品视频在线看 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产精品视频最多的网站 | 婷婷深爱 | 久久女同性恋中文字幕 | 99亚洲国产| 亚洲国产免费看 | 国产精品国产三级国产不产一地 | 欧美日韩视频一区二区三区 | 亚洲国产午夜精品 | 日韩三级久久 | 999一区二区三区 | 免费看黄电影 | 免费观看一级视频 | 国产丝袜制服在线 | 亚洲国产剧情 | 国产亚洲综合精品 | 四虎在线影视 | 91香蕉视频 | 国产伦理久久精品久久久久_ | 人人添人人澡人人澡人人人爽 | www.黄色片.com| 国产一级在线免费观看 | 日韩 国产| 91成人精品一区在线播放69 | 久久久久久久久毛片精品 | 99在线热播精品免费99热 | 久久99精品久久久久久久久久久久 | 青青草国产在线 | 天天操综 | a色网站| 国产一区二区在线免费 | 天天操天天射天天插 | 中文字幕一区二区三区乱码不卡 | 精品免费久久久久 | 国产精品美乳一区二区免费 | 亚洲久草网 | 日韩欧美精品一区二区 | 狠狠地日| 在线观看免费国产小视频 | 99视频这里有精品 | 粉嫩av一区二区三区免费 | 狠狠色丁香婷婷综合久小说久 | 日韩视频中文字幕在线观看 | 成人av教育 | 免费久久视频 | 九九爱免费视频 | 国产原创av片| 亚洲精品国产成人 | 国产日韩精品一区二区三区 | 欧美少妇xxx| 91探花在线视频 | 亚洲干视频在线观看 | 国产精品18毛片一区二区 | 91网在线观看 | 超级碰碰碰碰 | 亚洲天堂精品视频在线观看 | 日本黄色免费大片 | 久久国产日韩 | 99视频在线播放 | 日韩精品一区在线观看 | 中文字幕在线播出 | 一区二区免费不卡在线 | 亚洲精品五月天 | 又长又大又黑又粗欧美 | 欧美成人精品三级在线观看播放 | 国产手机视频 | 免费看污黄网站 | 国产精品涩涩屋www在线观看 | 免费看一级黄色大全 | 人人看看人人 | 人人讲 | 日韩黄色中文字幕 | 国产69久久久欧美一级 | 成人在线观看网址 | 色婷婷激情四射 | 香蕉视频在线免费 | 婷婷干五月 | 欧美动漫一区二区三区 | 九草视频在线观看 | 国产日韩精品一区二区在线观看播放 | 欧亚日韩精品一区二区在线 | 国产精品一区二区视频 | 在线精品观看 | 狠狠干夜夜爽 | 爱av在线网 | 欧美粗又大 | 色婷婷97| 久久久久久久久免费 | 99久久毛片 | 国产亚洲人成网站在线观看 | 精品国产一区二 | 伊人久久精品久久亚洲一区 | 91爱爱网址| 在线观看的av | 国产一级二级在线播放 | 人人玩人人添人人澡超碰 | 91少妇精拍在线播放 | 久久久精品国产一区二区电影四季 | 国产玖玖在线 | 成人午夜剧场在线观看 | 蜜臀一区二区三区精品免费视频 | 麻豆国产网站入口 | 99综合久久| 亚洲精品高清在线 | 美女久久视频 | 欧美人牲 | 豆豆色资源网xfplay | 亚洲精品短视频 | 91视频91蝌蚪 | 亚洲日韩中文字幕 | 精品国产一区二区三区久久久蜜月 | 在线观看爱爱视频 | 成人av免费网站 | 激情欧美一区二区三区免费看 | www.com.日本一级 | 人人澡超碰碰 | 国产精品2区 | 色婷婷视频在线 | 欧美夫妻生活视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 制服丝袜成人在线 | 国产福利在线免费 | 深夜福利视频在线观看 | 欧美激情精品 | 麻豆 91 在线| 国产精品一区二区av影院萌芽 | 久久久久久久免费 | 91人人揉日日捏人人看 | 久久久久国产精品午夜一区 | 成人免费观看av | 国产精品不卡在线播放 | 国产在线观看免费av | 中文字幕乱在线伦视频中文字幕乱码在线 | 日本精品视频在线观看 | 中文字幕在线资源 | 国产96在线视频 | 亚洲国产精品成人va在线观看 | 五月天视频网 | 久久亚洲国产精品 | 狠狠躁夜夜a产精品视频 | 在线观看完整版 | 狠狠色伊人亚洲综合成人 | 亚洲成av人电影 | av在线免费网站 | 亚洲人成在线电影 | 在线免费观看麻豆 | 亚洲码国产日韩欧美高潮在线播放 | 国产午夜三级一区二区三 | 欧美成人xxx| 99在线精品视频在线观看 | 免费网站在线观看人 | 欧美亚洲精品一区 | 三级av网| 美女一二三区 | 噜噜色官网 | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 国产日产精品一区二区三区四区的观看方式 | 免费a现在观看 | 夜夜躁日日躁狠狠躁 | 热久久这里只有精品 | 日本中文字幕在线观看 | 国内精品久久久久久久久久 | 黄色动态图xx | 久草在线综合网 | 9幺看片 | 久久6精品 | 日韩网站中文字幕 | 天天色天天艹 | 99r在线 | 中文字幕中文字幕在线中文字幕三区 | 日韩免费观看一区二区 | 国产高清综合 | 日韩av电影中文字幕在线观看 | 国产一区视频在线观看免费 | 久视频在线 | 97精品超碰一区二区三区 | 国产一级二级视频 | 国产黑丝一区二区 | 婷婷中文字幕 | 国产成人一区三区 | 五月综合 | 色综合亚洲精品激情狠狠 | 麻豆视频免费入口 | 亚州免费视频 | 日本最新高清不卡中文字幕 | 日本激情视频中文字幕 | 高清视频一区二区三区 | 免费三级黄 | 色综合婷婷久久 | 成人小视频在线免费观看 | 在线电影 一区 | 五月婷婷在线视频观看 | 香蕉视频网站在线观看 | 亚洲精品国产精品国 | 久久99精品久久久久婷婷 | 成人av电影免费 | 一级免费片 | 97在线观看免费高清 | 全黄色一级片 | 91在线影院| 日韩三级免费 | 国产免费黄视频在线观看 | 在线国产福利 | 中文字幕永久免费 | www.超碰97.com | 夜夜夜夜操 | 久久网站免费 | 精品亚洲成人 | 久久精品国产免费观看 | 亚洲日本欧美 | 亚洲激精日韩激精欧美精品 | 欧美日韩不卡在线视频 | 6699私人影院 | av网站免费在线 | 日韩欧美精品一区二区三区经典 | 亚洲视频 视频在线 | 欧美一区二区三区在线观看 | 天天射天天爱天天干 | 亚洲免费不卡 | 精品国产自 | 91精品国产乱码 | 高清免费在线视频 | 国产视频 亚洲视频 | 国产美女在线免费观看 | 亚洲精品观看 | 超碰97人人射妻 | 一本一道久久a久久综合蜜桃 | 中文国产成人精品久久一 | 91麻豆文化传媒在线观看 | 国产精品欧美久久久久三级 | 最近日韩中文字幕中文 | 麻豆成人精品视频 | 最近免费中文字幕mv在线视频3 | 亚洲精选国产 | 欧美色888 | 亚洲一区天堂 | 国产精品va在线观看入 | 最近更新好看的中文字幕 | 中文字幕在线播放一区 | 久久五月婷婷丁香 | 久久久久国产精品免费 | 国产亚洲人成网站在线观看 | 久久免费黄色 | 日韩综合第一页 | 9999免费视频 | 精品国产欧美一区二区三区不卡 | 久久99国产视频 | 黄色免费视频在线观看 | 免费一级日韩欧美性大片 | 91精品久久久久久久久久入口 | 国产欧美日韩视频 | 日日夜夜狠狠操 | 国产精品中文字幕在线播放 | 亚洲三级性片 | 日韩中文字幕国产 | 天天综合天天做天天综合 | 中文字幕在线一区观看 | 在线观看亚洲专区 | 中文字幕888 | 欧美大片在线看免费观看 | 91成人在线观看高潮 | 国产第一页在线观看 | 麻豆免费在线播放 | 国产精品一区二区三区在线播放 | 国产精品毛片一区二区 | 四虎影视av | 国产精品久久久久亚洲影视 | 六月激情婷婷 | 国产精品av一区二区 | 天天草天天摸 | 精品国产中文字幕 | 国产精品一区二区在线观看免费 | 在线视频国产区 | 97人人模人人爽人人喊中文字 | 久久精品人人做人人综合老师 | 国产欧美综合视频 | 国产1级毛片 | 99r在线观看 | 国产精品成人免费一区久久羞羞 | 精品国产电影一区二区 | 日韩中文字幕国产 | 精品欧美小视频在线观看 | 久久综合久久综合久久综合 | 亚洲精品高清一区二区三区四区 | 最近免费中文字幕大全高清10 | 摸阴视频| 亚洲精品美女久久久久网站 | 成人亚洲综合 | 最近中文字幕国语免费av | 免费一级日韩欧美性大片 | 丁香五月网久久综合 | 日韩大片在线免费观看 | 四虎国产精品免费 | 中文字幕一二三区 | 99久久激情 | 在线观看精品黄av片免费 | 免费av片在线 | 国产69熟 | 国产色资源 | av中文字幕在线播放 | 在线亚洲激情 | 开心色插 | 91人人视频在线观看 | www.夜夜草| 国产成人精品av久久 | av一区二区三区在线 | 国产精品永久免费观看 | 99亚洲精品 | 青青河边草免费直播 | 国产破处精品 | 欧美色久 | 午夜精品一区二区三区在线视频 | 中文资源在线播放 | 国产一区国产二区在线观看 | 99色免费视频 | 日韩成人免费在线观看 | 91福利区一区二区三区 | 国产91精品看黄网站 | 国产破处视频在线播放 | 亚洲日韩中文字幕在线播放 | a久久久久 | 国产成人精品午夜在线播放 | 日韩欧美视频 | 99久久精品免费看国产四区 | 日本深夜福利视频 | 91精品91| 色婷婷狠狠干 | 精品一区二区三区在线播放 | 久久久久久久免费观看 | 午夜三级理论 | 国产精品久久久久久久久久久久午 | 成人精品999| 日本在线成人 | 99精品一级欧美片免费播放 | 97免费在线视频 | 中国一 片免费观看 | 激情av在线播放 | 国精产品满18岁在线 | 国产午夜精品av一区二区 | 欧美性精品 | 欧美久久成人 | 色婷婷骚婷婷 | 免费看黄色91 | 91精品国产九九九久久久亚洲 | 91最新地址永久入口 | 婷婷丁香在线观看 | 日精品在线观看 | 奇米影视8888在线观看大全免费 | 久久久国产精品网站 | 婷婷日日| 国产精品久久久久久久久久久久午夜片 | 欧美精品久久 | 久久精品视频免费观看 | 激情xxxx| 国产精品 视频 | 一区二区在线影院 | 五月婷婷影院 | 中文字幕日韩在线播放 | 中文字幕日韩高清 | 成人免费网站在线观看 | 久久激情视频 | 亚洲少妇激情 | 成人黄色毛片视频 | 国产精品毛片久久久久久久 | 亚洲高清不卡av | 免费在线一区二区三区 | 在线观看视频你懂得 | 日韩一区二区免费播放 | 成人毛片a| 日韩av电影中文字幕 | 中国一级片在线 | 日韩黄色一区 | 国产福利91精品一区 | av天天干| 视频精品一区二区三区 | 九七人人干 | 2017狠狠干| 麻豆久久久 | 国产精品久免费的黄网站 | 91少妇精拍在线播放 | 色91av| 成人高清在线 | 激情在线免费视频 | 91福利视频久久久久 | 在线播放日韩 | 精品久久久一区二区 | 999热线在线观看 | 日本在线视频一区二区三区 | 国产网站av | 国产视频高清 | 国产精品女同一区二区三区久久夜 | 国内精品久久久久影院一蜜桃 | 色婷婷综合在线 | 日韩在线观看视频网站 | 日本在线观看一区二区 | 久久激情电影 | av在线8 | 国产正在播放 | 五月婷婷在线观看视频 | 精品国产免费久久 | 成人在线观看影院 | 午夜久久成人 | 九九导航 | 免费黄av| 又黄又网站 | 最近免费观看的电影完整版 | 91福利视频网站 | 国产精品乱码久久久 | 久久一区二区三区四区 | 日本性久久 | 久久久精品国产免费观看一区二区 | 最近中文字幕大全中文字幕免费 | 中文字幕色播 | 久久亚洲综合国产精品99麻豆的功能介绍 | 麻豆传媒视频在线 | 在线一二三四区 | 成片免费观看视频999 | 综合激情婷婷 | 91视频网址入口 | 国产精品第二十页 | 在线国产一区 | 婷婷狠狠操 | 999视频精品 | 色妞色视频一区二区三区四区 | 色噜噜在线观看视频 | 久久艹99| 天天曰夜夜操 | 天天草网站 | 丁香婷婷激情 | 97国产大学生情侣酒店的特点 | 日韩欧美视频免费看 | 久久99在线| 国产综合在线观看视频 | 中文字幕a在线 | 99精品视频在线播放免费 | www.超碰| 国产一区二区在线观看免费 | 亚洲欧美国产精品久久久久 | 天堂在线免费视频 | 国产一区免费视频 | 久久字幕| 免费色视频在线 | 欧美日本国产在线观看 | 久草国产在线观看 | 97精品国产aⅴ | 亚洲另类视频在线观看 | 国产精品第54页 | 国产精品久久久久久久久毛片 | 国产精品中文 | 免费特级黄色片 | 欧美精品一二三 | 激情六月婷婷久久 | 天天插日日射 | 久久视频这里有精品 | 精品亚洲免a | 久久久激情网 | 日韩中文字幕免费视频 | 久久超碰免费 | 国产99久久99热这里精品5 | 91久久精品一区二区三区 | 婷婷九月激情 | 久久久精品午夜 | 91污视频在线观看 | 国产自产在线视频 | 国产黄色免费观看 | 天天爽天天碰狠狠添 | 四虎成人免费观看 | 久久天堂网站 | 久久综合狠狠综合久久狠狠色综合 | 久久试看 | 久草在线手机观看 | 免费视频在线观看网站 | 成人片在线播放 | 深夜国产在线 | 久久av中文字幕片 | 国产日韩欧美在线一区 | 免费午夜视频在线观看 | 日韩av午夜 | 免费在线一区二区三区 | 一区二区激情 | 色综合五月 | 亚洲传媒在线 | 成人观看 | 国产精品999久久久 久产久精国产品 | 久久久99国产精品免费 | 欧美日韩免费在线视频 | 欧美日韩一区二区三区在线观看视频 | 国际精品久久久 | 国产精品大片在线观看 | 日韩有码在线观看视频 | 欧美激情视频免费看 | 久久久www成人免费毛片麻豆 | 国产午夜三级一区二区三桃花影视 | av日韩精品 | 国产91综合一区在线观看 | 在线观看国产中文字幕 | 日韩免费三级 | 久久久国产一区二区三区 | 久99久久| 超碰97中文 | 免费观看一级成人毛片 | 免费看日韩片 | 黄色一级免费 | 五月婷婷视频在线 | 国产一级精品视频 | 日韩黄色在线观看 | 国内三级在线观看 | 精品久久视频 | 色综合婷婷久久 | 五月天久久久久 | 丁香国产视频 | 色婷婷www | 成人a在线观看高清电影 | 国内精品在线观看视频 | 亚洲欧美观看 | 亚洲香蕉在线观看 | 97国产视频 | 日韩在线观看网站 | 91精品国产综合久久婷婷香蕉 | 99视频99| 国产午夜精品视频 | 麻豆av一区二区三区在线观看 | 色婷婷五| 狠狠色丁香婷婷综合最新地址 | 丁香激情五月 | 精品久久久久久一区二区里番 | 91丨九色丨高潮丰满 | 黄色网址国产 | 国产经典三级 | 色综合久久88色综合天天免费 | 婷婷综合激情 | 五月色综合| 日本高清久久久 | 色www精品视频在线观看 | 在线激情影院一区 | 四川妇女搡bbbb搡bbbb搡 | 九色精品免费永久在线 | 国产高清日韩欧美 | 中文av网站| 狠狠干天天色 | 超碰在线人人艹 | 亚洲成aⅴ人片久久青草影院 | 久久久国产一区 | 国产人成一区二区三区影院 | 欧美激情精品久久久久久免费 | 亚洲九九九 | 97超碰人人模人人人爽人人爱 | 808电影| 国产成人免费网站 | 亚洲精品视频在线观看网站 | 国产美女搞久久 | 久久精品一 | 亚洲欧美激情插 | 亚洲国产片色 | 精品一区二区三区香蕉蜜桃 | 免费看国产a | 亚洲 中文字幕av | 欧美午夜视频在线 | 久草视频在线看 | 国产亚洲aⅴaaaaaa毛片 | 亚洲少妇影院 | 日韩av一区二区在线影视 | 91麻豆精品国产自产在线游戏 | 91黄色小网站 | 国产免费影院 | 亚洲黄色在线免费观看 | 亚洲综合情 | 亚洲一区二区黄色 | 久久久久久久久黄色 | 日韩最新理论电影 | 成年人在线免费视频观看 | 亚洲精品乱码久久久久久蜜桃不爽 | 美女福利视频一区二区 | 成人黄色视 | 免费在线观看污 | 在线观看亚洲电影 | 人人爽人人爽人人爽人人爽 | 国产精品一区二区久久 | 在线免费观看视频一区 | 日韩一区二区免费视频 | 中文字幕不卡在线88 | 精品自拍网| 国产女做a爱免费视频 | 欧美日韩在线播放一区 | 成人在线观看av | 在线观看免费一区 | 人人藻人人澡人人爽 | 中文字幕乱在线伦视频中文字幕乱码在线 | 日韩欧美视频免费看 | 亚洲免费永久精品国产 | 欧美 日韩 久久 | 久久97超碰 | 国产福利在线不卡 | 美女视频a美女大全免费下载蜜臀 | 中文字幕之中文字幕 | 亚洲激色 | 天天干天天干天天 | 美女视频黄网站 | 欧美大片大全 | 精品一区在线 | 视频一区在线播放 | 色噜噜狠狠色综合中国 | 色噜噜在线观看视频 | 99久久精品国产免费看不卡 | 女人18毛片a级毛片一区二区 | 国产99久久九九精品免费 | 在线观看亚洲精品视频 | 97精品超碰一区二区三区 | 日本爱爱免费视频 | 国产精品美女久久久久久久网站 | 国内小视频在线观看 | 免费精品在线 | 亚洲国产日韩一区 | 亚洲免费色 | 二区在线播放 | 超碰在线98| 国产成人高清 | 久久五月婷婷丁香 | av888.com | 97免费 | 99久久99| 国产91学生粉嫩喷水 | 国产日韩精品一区二区在线观看播放 | av电影中文字幕在线观看 | 特黄特色特刺激视频免费播放 | 伊人va| 99视频这里只有 | 亚洲一区 av | 天天干夜夜想 | 91视频在线免费观看 | 亚洲精品久久久久中文字幕m男 | 99精品国自产在线 | 久久精品国产亚洲精品 | 久久99网站| 91在线永久 | 国产成人精品电影久久久 | 伊人伊成久久人综合网小说 | aaa日本高清在线播放免费观看 | 国产精品爽爽久久久久久蜜臀 | a国产精品| 麻豆一精品传二传媒短视频 | 国产亚洲免费的视频看 | 亚洲欧美在线综合 | 久久久久婷 | 91综合视频在线观看 | 久久国产精品一区二区 | 亚洲精品午夜aaa久久久 | 国产国语在线 | 欧美永久视频 | 成人福利在线播放 | 久久伊人精品天天 | 天堂av色婷婷一区二区三区 | 久久久国产精品一区二区中文 | 成人免费在线播放视频 | 国产69精品久久99的直播节目 | 精品一区 在线 | 久久午夜影视 | 国产视频精品免费 | 亚洲国产片 | 久久大片网站 | 国产精品麻豆一区二区三区 | 欧美一级黄色网 | 五月天综合色激情 | 国产免费视频在线 | 国产91影视| 亚洲资源视频 | 狠狠色噜噜狠狠 | 国产综合91| 国内成人精品2018免费看 | 久久国产亚洲精品 | 欧美最猛性xxxxx免费 | 日韩在线高清免费视频 | 欧洲色吧 | 色婷婷视频在线观看 | 日韩欧美视频免费在线观看 | 日韩av视屏| 在线看小早川怜子av | 最新超碰| 日韩在线视频二区 | 人人狠狠综合久久亚洲婷 | 毛片网在线观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 欧美日韩不卡在线观看 | 激情www| 亚洲综合激情 | 久草在线费播放视频 | 五月婷婷视频 | 成人小视频在线观看免费 | 亚洲国产成人高清精品 | 69av视频在线 | 在线欧美国产 | 婷婷丁香花五月天 | 在线免费观看欧美日韩 | 香蕉看片 | www.色午夜,com | 丁香 久久 综合 | 91视频国产高清 | 狠狠狠狠干| 黄色a在线观看 | 在线观看黄污 | 久久永久免费视频 | 色婷婷www | 精品资源在线 | 亚洲资源在线 | 欧美日韩在线播放一区 | 日韩精品一区二区在线视频 | 国产黄免费 | 中文字幕在线观看播放 | 久久久免费视频播放 | 国产成人av网站 | 国产精品久久99 | 日本久久高清视频 | 亚洲 欧美变态 另类 综合 | 久久国产精品久久国产精品 | 国产九色在线播放九色 | 天天干夜夜夜操天 | 99热这里只有精品国产首页 | 亚洲jizzjizz日本少妇 | 国产一级免费观看视频 | 色午夜 | 97色婷婷| 韩日三级av | 中文字幕在线视频一区二区 | 国内视频1区 | 午夜手机看片 | 五月婷婷久草 | 午夜精品影院 | 久久国产精品一区二区 | 欧洲精品在线视频 | 久久免费观看少妇a级毛片 久久久久成人免费 | 国产精品岛国久久久久久久久红粉 | 国产福利久久 | 丁香久久久 | 精品久久久影院 | 国产呻吟在线 | 久久久久久久精 | 成人在线黄色 | 91亚洲精品视频 | 亚洲综合激情网 | 亚洲 精品在线视频 | 成人网色 | 99视频国产精品免费观看 | 日韩女同一区二区三区在线观看 | 免费成人在线视频网站 | 99热这里只有精品8 久久综合毛片 | 深夜福利视频一区二区 | 婷婷丁香自拍 | av国产在线观看 | 黄色1级大片 | 色国产在线 | 婷婷色综 | 日日夜夜综合网 | 蜜臀久久99精品久久久久久网站 | 国产精品久久久久久吹潮天美传媒 | av一区二区三区在线 | 日日夜夜操操操操 | 免费久久网 | 综合亚洲视频 | 色婷婷电影 | 最近中文字幕免费视频 | 伊人伊成久久人综合网小说 | av免费电影网站 | 久久视频精品在线观看 | 91成人网页版 | av在线电影免费观看 | 久久视频免费观看 | 国产一区二区在线免费视频 | 久久99婷婷 | 日韩av在线免费播放 | 视频一区二区国产 | 精品国产乱码 | 在线免费av观看 | 黄色视屏av| 麻豆av一区二区三区在线观看 | 国产精品免费久久久久影院仙踪林 | 国产a级免费 | 丁香九月激情 | 在线观看免费91 | 久久久亚洲影院 | av中文字幕网 | 人人人爽| 免费观看全黄做爰大片国产 | 国产精品大片 | 国产一级性生活 | 亚洲国产午夜视频 | 97操碰 | 99精品视频网 | 婷婷色在线观看 | 黄色毛片一级 | 国产成人性色生活片 | 久久国产精品99国产精 | 久久一区二区免费视频 | 久综合网 | 亚洲一二区精品 | 丁香六月av | 国产精品麻豆99久久久久久 | 日本最新中文字幕 | 久久综合狠狠综合久久激情 | 亚洲精品国产麻豆 | 久久天天综合网 | 91理论片午午伦夜理片久久 | 日日夜夜精品视频 | 精品伊人久久久 | 欧美二区三区91 | 久久久影院一区二区三区 | 亚洲天堂网在线播放 | 日韩精品免费在线 | 五月婷婷色丁香 | 欧美日韩精品免费观看 | 国产日韩精品在线观看 | 一区二区三区电影 | 久草在线观 | 久久精品一区二区三区四区 | 九九热精 | 精品日韩在线 | 日韩欧美一区二区在线 | 国产自在线观看 | 亚洲传媒在线 | 日本中文字幕在线 | 国产精品一区二区免费在线观看 | 国产精品女视频 | 成人资源网 | 久久蜜臀av | 欧美久久久久久久久中文字幕 | 二区视频在线观看 | 在线观看不卡的av | 密桃av在线 | 免费男女网站 | 国产精品系列在线播放 | 97色在线观看 | 国产高清在线免费视频 | 国产精品中文字幕av | 国产精品一区二区久久精品爱微奶 | 国产一区二区在线视频观看 | 日韩综合第一页 | 久久国产美女 | 久久男人免费视频 | 久久综合狠狠狠色97 | 中文字幕频道 | 国产精品福利视频 | 婷婷在线网 | 国内精品久久久久久久 | 韩国av电影网 | 国产成视频在线观看 | 天天干夜夜操视频 | 国产在线色视频 | 黄色网在线免费观看 | 国产99在线免费 | 欧美在线aaa | 女人魂免费观看 | 久久综合五月天 | 国产精品久久久99 | 99c视频高清免费观看 | 国产精品久久久一区二区 | 国产成人一区二区三区 | 婷婷激情五月综合 | 亚洲国产欧美一区二区三区丁香婷 | 国产精品久久久久久久婷婷 | 免费看v片 | 国产成人精品一区二区三区在线观看 | 日韩激情视频 | 69av在线视频 | 久久视了 | 三上悠亚一区二区在线观看 | 欧美一级大片在线观看 | 伊人久久在线观看 | 亚洲综合在线观看视频 | 免费国产一区二区视频 | 一区二区三区在线视频观看58 | 91精品专区 | 天天色天天射天天干 | 五月婷婷开心中文字幕 | 欧美午夜一区二区福利视频 | www.国产精品| 日韩av在线一区二区 | 国产手机在线观看视频 | 97超级碰碰 | 久久久国产影院 | 精品国产精品一区二区夜夜嗨 | 久久不见久久见免费影院 | 免费看黄在线网站 | 免费看黄在线 | 日本性xxxxx 亚洲精品午夜久久久 | 91精品播放 | 国产99久久 | 91色国产在线 | 97在线精品| 激情视频一区二区三区 | 国产丝袜高跟 | 久久综合九色综合网站 | 国产精品久久久久久久久久久免费看 | 四季av综合网站 | 视频一区视频二区在线观看 | 日日射天天射 | 在线观看亚洲精品视频 | 久久久精品在线观看 | 免费av成人在线 | 亚洲精品在线免费 | 亚洲精品久久久久中文字幕二区 | 久久久免费毛片 | www.成人精品 | 天天操夜夜叫 | 中文字幕高清在线 | 免费无遮挡动漫网站 | 欧美国产精品一区二区 | 亚洲精品资源在线观看 | 日本xxxxav| 天天伊人狠狠 | 日日夜夜精品免费观看 | 国产青青青 | 成人免费在线视频观看 | 天天干天天在线 | 国产精品久久毛片 | 国产精品自在欧美一区 | 91在线看| 久久深爱网 | 国产精品6| 97超碰中文字幕 | 女人高潮特级毛片 | 亚洲在线视频网站 | 美女网站视频免费黄 | 国产精品18p | 国产精品门事件 | 久久久久久久久久久久久久电影 | 成人一级片在线观看 | 色综合久久久久综合 | 中日韩在线视频 | 国产精品永久在线 | www.日日日.com| 婷婷六月天综合 | 激情视频一区 | 精品一区二区影视 | 国产成人精品一区二区三区网站观看 | 青青草视频精品 | 欧美韩国在线 | 九九综合九九综合 | 欧美午夜精品久久久久久孕妇 | 亚洲欧美视频一区二区三区 | 国产精品成| 国偷自产中文字幕亚洲手机在线 | 天天干夜夜想 | 成年人黄色大片在线 | 精品你懂的 | 在线观看免费中文字幕 | 成人av一区二区在线观看 | 久草免费福利在线观看 | 精品视频免费播放 | 99人久久精品视频最新地址 | 亚洲欧美日韩国产精品一区午夜 | 精品国产1区2区3区 国产欧美精品在线观看 | 中文网丁香综合网 | av性在线| 国产一区在线不卡 | 国内外成人免费在线视频 | 91视频这里只有精品 | 亚洲欧美视频一区二区三区 | av在线不卡观看 | 免费黄色网址网站 | 91免费版在线 | www.五月婷婷.com | 久久综合中文色婷婷 | 九九一级片 | 91精品国自产在线观看 | 成人毛片a | 一级黄色片在线观看 | 国产精品一区二区免费视频 | 国产精品九九九 | 日韩精品无码一区二区三区 | 天天色天天射天天操 | 亚洲人成在线电影 | 99在线免费视频 | 国产精品永久免费在线 | 亚洲国产中文字幕在线视频综合 | 黄色三级免费观看 | 天堂av在线免费观看 | 国产aa精品 | 在线成人一区二区 | 在线视频欧美日韩 | 久久久精品视频成人 | 亚洲不卡av一区二区三区 | 久久字幕精品一区 | 一区二区视频免费在线观看 | av中文天堂在线 | 特片网久久 | 在线天堂中文www视软件 | 精品久久久久久国产偷窥 | 色吊丝在线永久观看最新版本 | 免费看的黄色片 | 日韩在线观看一区二区 | 天天色天天操天天爽 | 欧美激情第八页 | 99视频在线 | 国产精品免费视频网站 | 97国产精品 | 美女免费电影 | 亚洲综合激情小说 |