亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java常見啟動命令-jar、-server和-cp詳細比較

 更新時間:2023年07月31日 11:24:36   作者:chenzfp  
這篇文章主要給大家介紹了關于Java常見啟動命令-jar、-server和-cp詳細比較的相關資料,該文總結了常歸的jar包的啟動方式,并分析各種啟動方式的區(qū)別,需要的朋友可以參考下

Java程序常見啟動方式

當前java程序啟動主要以 -jar-server、-cp等幾個命令啟動 jar 程序,其中我們最常用的java -jar啟動方式,通常我們需要將當前工程所依賴的所有包編譯到一個jar包中,隨著工程不斷迭代,外部依賴越來越多,會導致整個jar包體積變得很大,每次更新部署傳輸效率就會變得很低,這時我們就可以使用到另外兩個命令來替代-jar命令,將一部分或者全部依賴拆分,更新部署時只用更新部分依賴即可

java -jar

此命令不用多說,基本所有javaer都很熟悉,也很簡單示例:基礎用法

java -jar xxxxxx.jar

依賴拆分到外部的用法,使用java -jar命令,同時需要將部分依賴包拆分到主啟動程序jar包外部時,通常將jar包放置在主jar包相對目錄下的一個單獨的lib文件中,如下圖,lib為拆分后的外部依賴放置的目錄

如上圖,原jar包大小為110m,通過將部分依賴移出到外部之后,主啟動程序jar包僅5.4m,這樣便于開發(fā)迭代時縮小傳輸體量,提高效率,這時需要使用到啟動參數(shù)-Dloader.path=lib來加載主程序外部的依賴

java -Dloader.path=lib -jar xxxxxx-app.jar

java -server與-client參數(shù)

可以通過-server或-client設置jvm的運行參數(shù)。

它們的區(qū)別是Server VM的初始堆空間會大一些,默認使用的是并行垃圾回收器,啟動慢運行快。Client VM相對來講會保守一些,初始堆空間會小一些,使用串行的垃圾回收器,它的目標是為了讓JVM的啟動速度更快,但運行速度會比Serverm模式慢些。

JVM在啟動的時候會根據(jù)硬件和操作系統(tǒng)自動選擇使用Server還是Client類型的 JVM。

32位操作系統(tǒng)如果是Windows系統(tǒng),不論硬件配置如何,都默認使用Client類型的JVM。

如果是其他操作系統(tǒng)上,機器配置有2GB以上的內(nèi)存同時有2個以上CPU的話默認使用server模式,否則使用client模式。

64位操作系統(tǒng)只有server類型,不支持client類型。

-server命令可以配合-jar命令使用,也可單獨使用

java -server -Xmx1024m -Xms256m -Xmn512m -Xss256k -Dloader.path=lib -jar xxxxxx-app.jar

-server單獨使用,配合-classpath加載外部依賴

maven build構建插件,maven-assembly-plugin,將所有jar構建到lib目錄

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <appendAssemblyId>true</appendAssemblyId>
                <finalName>cas-service</finalName>
                <descriptors>
                    <descriptor>src/main/assembly/package.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

package.xml

<assembly xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>bin</id>
    <formats>
        <format>tar.gz</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>/bin</outputDirectory>
            <fileMode>755</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <excludes>
                <exclude>**/mybatis-mapper/*</exclude>
            </excludes>
            <outputDirectory>/conf</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>
#!/bin/bash
MAIN_CLASS=com.xxx.XXXApp
source ~/.bash_profile
export PROJECT_HOME="$(
  cd "$(dirname "$0")"/..
  pwd
)"
APP_CLASS_PATH=.:$PROJECT_HOME/conf:$PROJECT_HOME/lib/*
mkdir $PROJECT_HOME/logs 2>/dev/null
(LD_LIBRARY_PATH=. java -server -Xmx256m -Xms256m -Xmn128m -Xss512k \
  -classpath $APP_CLASS_PATH $MAIN_CLASS >/dev/null 2>&1 &)

java -cp

使用-cp命令啟動時,用法與-server配合-classpath使用時類似,不同的是不能與-jar命令一起使用,使用-cp命令時-jar便會失效

#!/bin/bash

MAIN_CLASS=com.xxx.XXXApp

source ~/.bash_profile
export PROJECT_HOME="$(
  cd "$(dirname "$0")"/..
  pwd
)"

function init_app_class_path() {
  for file in $1/*; do
    if [ -z "$APP_CLASS_PATH" ]; then
      APP_CLASS_PATH=$file
    else
      APP_CLASS_PATH=$APP_CLASS_PATH:$file
    fi
  done
}

init_app_class_path $PROJECT_HOME/lib
APP_CLASS_PATH=$PROJECT_HOME/conf:$APP_CLASS_PATH

mkdir $PROJECT_HOME/logs 2>/dev/null

(LD_LIBRARY_PATH=. java -Xmx512m -Xms256m -Xmn128m -Xss512k \
  -cp $APP_CLASS_PATH $MAIN_CLASS >/dev/null 2>&1 &)

試了一下,-cp掃描所有jar包及配置,直接使用*也是可以匹配到的,如下這種方式也是有效的

java -cp /data/myapp/conf:/data/myapp/lib/* com.xxx.XXXApp

總結 

到此這篇關于Java常見啟動命令-jar、-server和-cp詳細比較的文章就介紹到這了,更多相關Java啟動命令-jar、-server和-cp內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java中有界隊列的飽和策略(reject policy)原理解析

    Java中有界隊列的飽和策略(reject policy)原理解析

    這篇文章主要介紹了Java中有界隊列的飽和策略(reject policy)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • Java線程中synchronized的用法與原理解析

    Java線程中synchronized的用法與原理解析

    這篇文章主要介紹了Java線程中synchronized的用法與原理解析,只要有線程,就會有并發(fā)的現(xiàn)象,也同時會產(chǎn)生數(shù)據(jù)不一致,那么對于需要使用同一個數(shù)據(jù)的兩個線程,就會產(chǎn)生沖突,那么就引出了鎖的概念,本篇會針對性的說下synchronized這個關鍵字,需要的朋友可以參考下
    2024-01-01
  • springboot整合knife4j全過程

    springboot整合knife4j全過程

    這篇文章主要介紹了springboot整合knife4j全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • java 讀取zip文件的兩種方式示例詳解

    java 讀取zip文件的兩種方式示例詳解

    ZIP(壓縮文件)是一種常見的文件格式,在Java中可以使用java.util.zip包提供的API來讀取和處理ZIP文件,本文將介紹如何使用Java讀取ZIP文件,并提供代碼示例,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Jmeter使用接口傳遞數(shù)據(jù)過程圖解

    Jmeter使用接口傳遞數(shù)據(jù)過程圖解

    這篇文章主要介紹了Jmeter使用接口傳遞數(shù)據(jù)過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Spring常用一些工具類實例匯總

    Spring常用一些工具類實例匯總

    這篇文章主要介紹了Spring常用一些工具類實例匯總,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • Spring Boot定時器創(chuàng)建及使用解析

    Spring Boot定時器創(chuàng)建及使用解析

    這篇文章主要介紹了Spring Boot定時器創(chuàng)建及使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • 手寫Java?LockSupport的示例代碼

    手寫Java?LockSupport的示例代碼

    LockSupport給我們提供了一個非常強大的功能,它是線程阻塞最基本的元語,他可以將一個線程阻塞也可以將一個線程喚醒,因此經(jīng)常在并發(fā)的場景下進行使用。本文將用60行代碼實現(xiàn)手寫LockSupport,需要的可以參考一下
    2022-08-08
  • 淺談SpringMVC的攔截器(Interceptor)和Servlet 的過濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件

    淺談SpringMVC的攔截器(Interceptor)和Servlet 的過濾器(Filter)的區(qū)別與聯(lián)系 及Spr

    這篇文章主要介紹了淺談SpringMVC的攔截器(Interceptor)和Servlet 的過濾器(Filter)的區(qū)別與聯(lián)系 及SpringMVC 的配置文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 一文了解為什么Java中只有值傳遞

    一文了解為什么Java中只有值傳遞

    Java?傳參是值傳遞還是引用傳遞?這個問題很基礎,但是許多人都有點懵。本文就來通過一些示例帶大家詳細了解一下,需要的可以參考一下
    2022-07-07

最新評論