精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

過兩年 JVM 可能就要被它替代了

開發 前端
雖然我們還沒有看到有哪個公司說在用 GraalVM 了,但是 Quarkus、Spring Boot、Spring等很多的框架都已經支持 GraalVM 的 Native-image 模式,而且在 Orcale 的大力推廣下,相信不久之后就會出現在更多的產品中。

?大家好,我是風箏。 今天說一說 GraalVM。

GraalVM 是 Oracle 大力發展和想要推廣的新一代 JVM ,目前很多框架都已經漸漸支持 GraalVM 了,比如我們在用的 Spring 也已經推出了對 GraalVM 兼容的工具包了。

既然說的這么厲害,那么它到底是何方神圣呢。

GraalVM 和 JVM 的關系

既然叫做VM,那肯定和 JVM 有關系的吧。JVM 全稱 Java 虛擬機,我們都知道,Java 程序是運行在虛擬機上的,虛擬機提供 Java 運行時,支持解釋執行和部分的(JIT)即時編譯器,并且負責分配和管理 Java 運行所需的內存,我們所說的各種垃圾收集器都工作在 JVM 中。

比如 Oracle JDK、OpenJDK ,默認的 JVM 是 HotSpot 虛擬機,這是當前應用最廣泛的一個虛擬機。我們平時見到的各種將虛擬機的書籍、文章、面試題,基本上都是說的 HotSpot 虛擬機。

除此之外,還有一些商用,或者說小眾的虛擬機存在,比如IBM 的J9 JVM,商用的 Zing VM 等。

那 GraalVM 是另一種 Java 虛擬機嗎?

是,又不全是。

GraalVM 可以完全取代上面提到的那幾種虛擬機,比如 HotSpot。把你之前運行在 HotSpot 上的代碼直接平移到 GraalVM 上,不用做任何的改變,甚至都感知不到,項目可以完美的運行。

但是 GraalVM 還有更廣泛的用途,不僅支持 Java 語言,還支持其他語言。這些其他語言不僅包括嫡系的 JVM 系語言,例如 Kotlin、Scala,還包括例如 JavaScript、Nodejs、Ruby、Python 等。

圖片

GraalVM 的野心不止于此,看上面的圖,它的目的是搭建一個 Framework,最終的目標是想要支持任何一種語言,無論哪種語言,可以共同跑在 GraalVM 上,不存在跨語言調用的壁壘。

GraalVM 和JDK有什么關系

Java 虛擬機都是內置在 JDK 中的,比如Orcale JDK、OpenJDK,默認內置的都是 HotSpot 虛擬機。

GraalVM 也是一種 JDK,一種高性能的 JDK。完全可以用它替代 OpenJDK、Orcale JDK。

GraalVM 如何運行 Java 程序

說了半天,是不是還是不知道 GraalVM 到底是什么。

  • GraalVM - 還包含 Graal (JIT)即時編譯器,可以結合 HotSpot 使用
  • GraalVM – 是一種高性能 JDK,旨在加速 Java 應用程序性能,同時消耗更少的資源。
  • GraalVM - 是一種支持多語言混編的虛擬機程序,不僅可以運行 JVM 系列的語言,也可支持其他語言。

GraalVM 提供了兩種方式來運行 Java 程序。

第一種:結合 HotSpot 使用

上面說了,GraalVM 包含 Graal (JIT)即時編譯器,自從 JDK 9u 版本之后,Orcale JDK 和 OpenJDK 就集成了 Graal 即時編譯器。我們知道 Java 既有解釋運行也有即時編譯。

當程序運行時,解釋器首先發揮作用,代碼可以直接執行。隨著時間推移,即時編譯器逐漸發揮作用,把越來越多的代碼編譯優化成本地代碼,來獲取更高的執行效率。即時編譯器可以選擇性地編譯熱點代碼,省去了很多編譯時間,也節省很多的空間。比如多次執行的方法或者循環、遞歸等。

JDK 默認使用的是 C2 即時編譯器,C2是用C++編寫的。而使用下面的參數可以用 Graal 替換 C2。

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

Graal 編譯器是用 Java 實現的,用 Java 實現自己的編譯器。Graal 基于一些假設的條件,采取更加激進的方式進行優化。采用 Graal 編譯器之后,對性能有會有一定的提升。

但是如果你還是在用 JDK8,那對不起了,GraalVM 的一切都用不了。

第二種:AOT 編譯本地可執行程序

這是 GraalVM 真正厲害的地方。

AOT 提前編譯,是相對于即時編譯而言的。AOT在運行過程中耗費 CPU 資源來進行即時編譯,而程序也能夠在啟動的瞬間就達到理想的性能。例如 C 和 C++語言采用的是AOT靜態編譯,直接將代碼轉換成機器碼執行。而 Java 一直采用的是解釋 + 即時編譯技術,大多數情況下 Java 即時編譯的性能并不比靜態編譯差,但是還是一直朝著 AOT 編譯的方向努力。

但是 Java 對于 AOT 來說有一些難點,比如類的動態加載和反射調用。

GraalVM 顯然是已經克服了這些問題,使用 GraalVM 可以直接將 Java 代碼編譯成本地機器碼形態的可執行程序。

我們目前運行 Java 一定要安裝 JDK 或者 JRE 對不對,如果將程序直接編譯成可執行程序,就不用在服務器上安裝 JDK 或 JRE 了。那就是說運行 Java 代碼其實也可以不用虛擬機了是嗎?

GraalVM 的 AOT 編譯實際上是借助了 SubstrateVM 編譯框架,可以將 SubstrateVM  理解為一個內嵌精簡版的 JVM,包含異常處理,同步,線程管理,內存管理(垃圾回收)和 JNI 等組件。

SubstrateVM 的啟動時間非常短,內存開銷非常少。用這種方式編譯出的 Java 程序的執行時間可與C語言持平。

下圖是使用即時編譯(JVM運行)與 AOT (原生可執行程序)兩種方式的 CPU 和內存使用情況對比,可以看出來,AOT 方式下 CPU 和內存的使用都非常少。

圖片

除了運行時占用的內存少之外,用這種方式最終生成的可執行文件也非常小。這對于云端部署非常友好。目前很多場景下都使用 Docker 容器的方式部署,打一個 Java 程序的鏡像包要包含完整的 JVM 環境和編譯好的 Jar 包。而AOT 方式可以最大限度的縮小 Docker 鏡像的體積。

缺點

好處多多,當然也有一些弊端。對于反射這種純粹在運行時才能確定的部分,不可能完全通過優化編譯器解決,只能通過增加配置的方式解決。麻煩是麻煩了一點,但是是可行的,Spring Boot 2.7的版本已經支持原生鏡像了,Spring 這種非常依賴反射的框架都可以支撐,我們用起來也應該沒問題。

GraalVM 如何支持多語言

要支持多語言,就要說到 GraalVM 中的另一個核心組件 Truffle 了。

Truffle 是一個用 Java 寫就的語言實現框架。基于 Truffle 的語言實現僅需用 Java 實現詞法分析、語法分析以及針對語法分析所生成的抽象語法樹(Abstract Syntax Tree,AST)的解釋執行器,便可以享用由 Truffle 提供的各項運行時優化。

就一個完整的 Truffle 語言實現而言,由于實現本身以及其所依賴的 Truffle 框架部分都是用 Java 實現的,因此它可以運行在任何 Java 虛擬機之上。

當然,如果 Truffle 運行在附帶了 Graal 編譯器的 Java 虛擬機之上,那么它將調用 Graal 編譯器所提供的 API,主動觸發對 Truffle 語言的即時編譯,將對 AST 的解釋執行轉換為執行即時編譯后的機器碼。

圖片

目前除了 Java, JavaScript、Ruby、Python 和許多其他流行語言都已經可以運行在 GraalVM 之上了。

GraalVM 官方還提供了完整的文檔,當有一天你開發了一款新的語言,也可以用 Truffle  讓它跑在 GraalVM 上。

圖片

安裝和使用

GraalVm 目前的最新版本是 22.3,分為社區版和企業版,就好像 OpenJDK 和 商用的 Orcale 的 JDK ,企業版會多一些性能分析的功能,用來幫助更大程度的優化性能。

社區版是基于OpenJDK 11.0.17, 17.0.5, 19.0.1,而商業版基于Oracle JDK 8u351, 11.0.17, 17.0.5, 19.0.1,所以,如果你想用免費的,只能將程序升級到 JDK 11 以上了。

圖片

GraalVM 支持 Windows、Linux、MacOS ,可以用命令安裝最新版,或者直接下載對應 Java 版本的。

我是下載的 Java 11 的版本,下載下來的壓縮包,直接解壓,然后配置環境變量。把解壓目錄配置到環境變量的 JAVA_HOME就可以了。

解壓好其實就相當于安裝完畢了,查看一下版本。

進入到解壓目錄下的bin?目錄中,運行 java -version。運行結果如下:

圖片

運行代碼

常用方式運行

也就是我們平時一直在用的這種方式,把 GrralVM 當做 OpenJDK 使用,只不過把即時編譯器換成了 Graal 。就是前面說的第一種方式。

安裝完成后,就可以把它當做正常的 JDK 使用了,比如 javac、jps、jmap等都可以直接用了。大多數人還是用 IDEA 的,所以就直接在 IDEA 中使用就好了。

1、先隨意創建一個 Java 項目。

2、創建完成后,打開項目設置。

圖片

3、在打開的項目設置彈出框中選擇 SDKs,點擊加號,選擇前面解壓的 GraalVM 目錄。

圖片

4、然后選擇剛剛添加的這個 JDK。

圖片

5、最后運行一段測試代碼。

public class HelloWorld {
public static void main(String[] args) throws Exception {
System.out.println("Hello GraalVM!");
Thread.sleep(1000 * 100 * 100);
}
}

圖片

上面這樣的運行方式,其實就相當于前面說的第一種運行方式

native-image 方式運行

這種方式就是 AOT 編譯成機器碼,已可執行文件的形式出現。native-image 可以命令行的形式執行,也可以在配合 Maven 執行,我這兒就直接演示用 Maven 形式的了,畢竟IDEA 搭配 Maven 用習慣了。

1、安裝native-image 工具包

native-image 是用來進行 AOT 編譯打包的工具,先把這個裝上,才能進行后面的步驟。

安裝好 GraalVM 后,在 bin?目錄下有一個叫做 gu?的工具,用這個工具安裝,如果將 bin目錄添加到環境中,直接下面的命令安裝就行了。

gu install native-image

如果沒有將 bin?目錄加到環境變量中,要進入到 bin目錄下,執行下面的命令安裝。

./gu install native-image

這個過程可能比較慢,因為要去 github 上下載東西,如果一次沒成功(比如超時),多試兩次就好了。

2、配置 Maven

配置各種版本

 <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>${java.specification.version} </maven.compiler.source>
<maven.compiler.target>${java.specification.version}</maven.compiler.target>
<native.maven.plugin.version>0.9.12</native.maven.plugin.version>
<imageName>graalvm-demo-image</imageName>
<mainClass>org.graalvm.HelloWorld</mainClass>
</properties>

native.maven.plugin.version是要用到的編譯為可執行程序的 Maven 插件版本。

imageName是生成的可執行程序的名稱。

mainClass是入口類全名稱。

配置 build 插件

  <build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>java-agent</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<workingDirectory>${project.build.directory}</workingDirectory>
<arguments>
<argument>-classpath</argument>
<classpath/>
<argument>${mainClass}</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>native</id>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>${project.build.directory}/${imageName}</executable>
<workingDirectory>${project.build.directory}</workingDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.source}</target>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>

</plugins>

</build>

配置 profiles

  <profiles>
<profile>
<id>native</id>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${native.maven.plugin.version}</version>
<extensions>true</extensions>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>build</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>test-native</id>
<goals>
<goal>test</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
<configuration>
<fallback>false</fallback>
<buildArgs>
<arg>-H:DashboardDump=fortune -H:+DashboardAll</arg>
</buildArgs>
<agent>
<enabled>true</enabled>
<options>
<option>experimental-class-loader-support</option>
</options>
</agent>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>

3、使用 maven 編譯,打包成本地可執行程序。

執行 Maven 命令

mvn clean package

或者

mvn  -Pnative -Dagent package 

編譯打包的過程比較慢,因為要直接編譯成機器碼,所以比一般的編譯過程要慢一些。看到下面的輸入日志,說明打包成功了。

圖片

4、運行可執行程序包,打開 target 目錄,已經看到了graalvm-demo-image可執行程序包了,大小為 11.58M。

圖片

然后就可以運行它了,進入到目錄下,執行下面的命令運行,可以看到正常輸出了。注意了,這時候已經是沒有用到本地 JVM 了。

./graalvm-demo-image 
Hello GraalVM!

這時候,用 jps -l?命令已經看不到這個進程了,只能通過 ps看了。

總結

雖然我們還沒有看到有哪個公司說在用 GraalVM 了,但是 Quarkus、Spring Boot、Spring等很多的框架都已經支持 GraalVM 的 Native-image 模式,而且在 Orcale 的大力推廣下,相信不久之后就會出現在更多的產品中。趕緊體驗一下吧。

責任編輯:武曉燕 來源: 古時的風箏
相關推薦

2021-03-04 11:10:20

手機存儲軟件

2023-04-03 08:08:54

2019-12-20 09:32:02

人工智能程序員軟件

2019-04-02 10:39:42

WiFiLiFi5G

2021-03-18 08:08:16

FedoraLogoFedora 社區

2023-05-04 10:09:00

Kubernetes微服務

2010-10-28 10:30:16

云計算關系數據庫

2018-09-07 18:41:52

OracleMySQLMariaDB

2020-12-15 10:49:14

HTTP2TCP

2019-06-25 09:22:58

Android 谷歌架構

2014-08-06 11:03:48

編程語言

2020-01-03 09:40:16

Windows 7Windows 10Windows

2019-04-24 09:29:32

戴爾

2023-02-05 14:00:46

ChatGPT搜索引擎

2020-02-24 08:00:30

刪庫跑路判刑

2021-08-30 11:48:33

開發技術互聯網

2018-01-02 11:22:14

2015-05-08 11:29:34

陸兆禧阿里巴巴

2021-02-21 09:28:24

kafka系統并發量

2016-08-22 13:39:59

閃存存儲
點贊
收藏

51CTO技術棧公眾號

久久久久免费精品| 国产乱人伦精品一区二区| 国产一二三四视频| 精品亚洲二区| 福利视频导航一区| 亚洲一区二区不卡视频| 国产成人手机在线| 日韩1区2区日韩1区2区| 九九久久国产精品| 美女脱光内衣内裤| 中文一区二区三区四区| 色婷婷狠狠综合| 337p亚洲精品色噜噜狠狠p| 深夜福利视频在线免费观看| 男女男精品视频| 久久久久国色av免费观看性色| 精品欧美一区二区久久久| 精品视频在线观看免费观看 | 800av在线免费观看| 日韩精品福利| 国产suv精品一区二区三区| 国产精品久久久久av免费| 麻豆成人在线视频| 91麻豆精品国产91久久久平台| 亚洲成人网av| 红桃视频一区二区三区免费| 欧美日韩亚洲国产| 午夜在线成人av| 欧美一级免费在线观看| 高清中文字幕一区二区三区| 成人中文字幕合集| 成人免费观看网址| 波多野结衣黄色| 夜夜嗨网站十八久久| 九九热这里只有精品6| 国精产品一区一区| 成人久久电影| 亚洲欧洲视频在线| 在线观看国产网站| 久久精品66| 亚洲成人1234| 风韵丰满熟妇啪啪区老熟熟女| 伊人久久一区| 欧美日韩国产一级片| 欧美精品性生活| 精品肉辣文txt下载| 在线免费观看视频一区| 欧美性猛交久久久乱大交小说| 蜜桃麻豆av在线| 精品电影在线观看| 国产v片免费观看| free性护士videos欧美| 午夜欧美视频在线观看| 国产av人人夜夜澡人人爽麻豆| av小次郎在线| 亚洲理论在线观看| 久久人妻无码一区二区| 欧美hdxxxx| 亚洲一区二区三区三| 国产一区二区三区乱码| 2020av在线| 狠狠色狠狠色综合日日小说| 99蜜桃臀久久久欧美精品网站| 亚洲精品永久免费视频| 在线免费观看不卡av| 久久人人爽av| 国产一区二区三区视频在线| 日韩欧美一区二区久久婷婷| 一二三区视频在线观看| 9l视频自拍蝌蚪9l视频成人| 亚洲精品99久久久久| 熟女少妇一区二区三区| 欧美午夜精彩| 久久99久久99精品免观看粉嫩| 国产真实乱人偷精品视频| 一区二区三区导航| 国产成人鲁鲁免费视频a| 在线观看国产小视频| 国产精品一区免费视频| 精品无码久久久久国产| av在线播放网站| 亚洲人成网站在线| 成年人网站免费视频| 欧美特大特白屁股xxxx| 欧美精品亚洲二区| 国产白袜脚足j棉袜在线观看| 三级小说欧洲区亚洲区| 色综久久综合桃花网| 久久久精品91| 日韩中文字幕不卡| 97久久人人超碰caoprom欧美| 手机在线观看毛片| 国产精品美女久久久久aⅴ| 加勒比海盗1在线观看免费国语版| heyzo在线| 在线观看av不卡| 中文字幕无人区二| 精品久久久中文字幕| 九九热精品视频| 精品人妻一区二区色欲产成人| 精品亚洲国内自在自线福利| 国产一区免费在线| 麻豆影视在线观看_| 五月婷婷综合激情| 一级做a免费视频| 欧美午夜18电影| 久久手机精品视频| 无码人妻丰满熟妇区bbbbxxxx| 国产一区二区美女| 日韩欧美亚洲在线| cao在线视频| 欧美一级日韩不卡播放免费| wwwwxxxx国产| 亚洲国产高清视频| 91色琪琪电影亚洲精品久久| 久久久久久女乱国产| 亚洲国产欧美一区二区三区丁香婷| 91日韩视频在线观看| 老司机精品在线| 九九热这里只有精品6| 91极品身材尤物theporn| 久久蜜桃香蕉精品一区二区三区| a天堂资源在线观看| japansex久久高清精品| 夜夜嗨av一区二区三区免费区| 日韩欧美不卡视频| 丁香网亚洲国际| 亚洲黄色网址在线观看| 国精品产品一区| 国产亚洲一区精品| 亚洲国产成人无码av在线| 成人福利电影精品一区二区在线观看| 中文字幕在线亚洲三区| 欧美黄色成人| 日韩亚洲精品视频| 中文字幕免费播放| 中文字幕免费不卡在线| 嫩草av久久伊人妇女超级a| 久久99高清| 欧美一级大胆视频| 性xxxx视频播放免费| 五月天一区二区| 国产在线不卡av| 亚洲黄页一区| 精品国产乱码久久久久久蜜柚| 欧美理论片在线播放| 日韩天堂在线观看| 真实国产乱子伦对白在线| 国产精品一区免费视频| wwwwww欧美| 波多野结衣一区二区三区免费视频| 欧美成人合集magnet| 国产免费高清av| 一区二区三区在线影院| www.黄色网| 激情婷婷亚洲| 精品日韩美女| 日韩免费va| 自拍偷拍亚洲在线| 国产精品自偷自拍| 一区二区三区四区视频精品免费| 中文字幕人妻无码系列第三区| 最新国产精品| 国产伦精品一区二区三区视频黑人 | 成人全视频免费观看在线看| 日韩中文综合网| 精品女同一区二区三区| 亚洲妇熟xx妇色黄| 九色porny自拍视频| 免费看精品久久片| 欧美另类videos| 全球av集中精品导航福利| 国产精品91免费在线| 免费a在线看| 精品成人佐山爱一区二区| 91精品国产综合久久久蜜臀九色| 国产欧美日产一区| 人妻少妇偷人精品久久久任期| 宅男噜噜噜66一区二区| 亚洲aⅴ天堂av在线电影软件| 国产精区一区二区| 97在线免费观看视频| 成人高清免费观看mv| 欧美一区日本一区韩国一区| 日韩精品乱码久久久久久| 亚洲国产精品99久久久久久久久| 波多野结衣在线免费观看| 国产日韩免费| 伊人av成人| 日韩影视在线观看| 91精品久久久久久久久久久久久| 欧美24videosex性欧美| 伊人久久久久久久久久久| www.热久久| 在线观看免费成人| 国产中文字幕免费| 中文字幕一区日韩精品欧美| 中文字幕 日本| 久久99国产精品尤物| 黄色免费视频大全| 欧美91大片| 日韩欧美一区二区三区四区五区| av成人综合| 成人乱色短篇合集| 欧美性猛交xxx高清大费中文| 色与欲影视天天看综合网| p色视频免费在线观看| 亚洲丁香婷深爱综合| 国产又黄又爽视频| 欧亚一区二区三区| 日本在线观看视频网站| 一区二区三区在线不卡| 国产一区二区三区四区在线| 99精品视频中文字幕| 绯色av蜜臀vs少妇| 久久国产免费看| 国内自拍视频一区| 国产一区二区三区久久| 成人午夜免费在线视频| 99国产精品一区二区| 日本高清不卡三区| 色爱综合av| 国内精品视频免费| 在这里有精品| 91黄在线观看| 日韩免费一级| 亚洲自拍偷拍视频| 国产免费区一区二区三视频免费| 国产精品久久久久av| 亚洲成人看片| 日韩av电影院| 一个人看的www视频在线免费观看| 欧美激情一区二区三区高清视频| 黄a在线观看| 日韩最新在线视频| 日本www在线| 日韩一级黄色av| 又爽又大又黄a级毛片在线视频| 一本久久综合亚洲鲁鲁| 成人福利在线| 中文字幕亚洲自拍| 亚洲视频tv| 日韩在线不卡视频| 久做在线视频免费观看| www.亚洲人.com| 综合久久2019| 久久久久久久久久久久av| 51漫画成人app入口| 98精品国产高清在线xxxx天堂| 超碰在线网站| 2019av中文字幕| 一区二区三区四区日本视频| 日本精品久久久久影院| 亚洲天堂一区二区| 国产日韩在线精品av| 99视频这里有精品| 99电影在线观看| 久久综合五月婷婷| 欧美污视频久久久| 奇米影视亚洲| 三上悠亚免费在线观看| 亚洲视频久久| 精品视频一区二区在线| 免费成人美女在线观看.| 九九热精品国产| 国产成人免费网站| 熟女丰满老熟女熟妇| 国产日韩精品一区| 日韩在线观看视频一区二区| 亚洲国产精品久久久久秋霞影院| 天天操天天爽天天干| 91黄色免费观看| 99久久精品日本一区二区免费 | 国产精品美女999| 色综合.com| 国产精品一区二区免费看| 天堂俺去俺来也www久久婷婷| 日韩一本精品| 国内精品福利| 中文字幕在线观看第三页| 国产美女娇喘av呻吟久久| 国产精品久久久久久亚洲av| 国产女同互慰高潮91漫画| 日韩va亚洲va欧美va清高| 欧美日韩国产中文字幕 | 国产黄色91视频| 添女人荫蒂视频| 亚洲欧美日韩久久| 免费av网站在线| 日韩一区二区影院| 欧美一区二区视频| 久久成人综合视频| 欧美日韩视频网站| 国产精品果冻传媒潘| 成人在线免费小视频| 成人免费在线网| 精品一二三四区| av女人的天堂| 亚洲二区在线观看| 91精品人妻一区二区三区果冻| 亚洲精品不卡在线| 成视频免费观看在线看| 日本午夜在线亚洲.国产| 综合欧美亚洲| 中文字幕在线中文字幕日亚韩一区| 午夜一区二区三区不卡视频| 亚洲av无日韩毛片久久| 国产午夜精品一区二区三区四区 | 91国内精品野花午夜精品| 亚洲免费成人网| 色偷偷av一区二区三区乱| 波多野结衣亚洲| 国产伦精品一区二区三区视频免费| 久久精品影视| 爱情岛论坛成人| 91免费在线看| 国产在线视频第一页| 91精品国产综合久久蜜臀 | 日韩大片在线免费观看| 996这里只有精品| 国产麻豆精品在线| 影音先锋男人看片资源| 日本精品免费观看高清观看| 三级小视频在线观看| 色综合久综合久久综合久鬼88| 91精品国产一区二区在线观看| 日韩高清dvd| 久久久人人人| 国产精品无码一区二区三区免费| 亚洲一区二区影院| 超碰人人人人人人| 久久亚洲精品小早川怜子66| 四虎国产精品永久在线国在线| 日产精品久久久一区二区| 久久经典综合| 精品人妻一区二区三区视频| 欧美日韩精品在线观看| 亚洲AV成人无码一二三区在线| 国产69精品久久久| 国产精品一区二区三区美女| 日韩久久久久久久久久久久| 国产麻豆一精品一av一免费| 欧美国产精品一二三| 91精品国产综合久久蜜臀| 18+视频在线观看| 91黄色精品| 激情久久久久| 中文字幕一区三区久久女搜查官| 亚洲高清一区二区三区| 天堂成人在线视频| 2019亚洲男人天堂| 国产欧美日韩影院| www亚洲成人| 亚洲视频一区二区免费在线观看| 国产又黄又粗又长| 欧美日韩福利电影| 久久悠悠精品综合网| 国产成人无码精品久久久性色| 91麻豆国产精品久久| 69xxxx国产| 日韩亚洲欧美中文高清在线| 韩国三级成人在线| 97超碰在线人人| 久久久777精品电影网影网| 久久影视中文字幕| 久久精视频免费在线久久完整在线看| www.成人在线.com| 亚洲精品久久久久久久蜜桃臀| 91在线国产福利| 中文字幕二区三区| 色综合男人天堂| 在线观看欧美理论a影院| 人人干人人干人人| 亚洲精品久久嫩草网站秘色| 天天爽夜夜爽夜夜爽| 国产精品久久久久久久久久 | 欧美xxxx综合视频| 麻豆精品99| 蜜桃免费在线视频| 亚洲一区二区精品久久av| 免费在线性爱视频| 亚洲a∨日韩av高清在线观看| 亚洲国内自拍| 阿v天堂2014| 欧美videofree性高清杂交| 欧美gay视频| 国产四区在线观看| 91蝌蚪porny成人天涯| 国产又粗又大又爽| 欧美一级电影久久| 国产韩国精品一区二区三区| 艳妇乳肉豪妇荡乳xxx| 欧美性做爰猛烈叫床潮| 日韩欧美一起| 亚洲日本精品| 91亚洲永久精品| 亚洲AV无码一区二区三区性| 欧美在线视频在线播放完整版免费观看 | 日韩精品中文字幕视频在线| 中文字幕日本一区|