最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java常見啟動(dòng)命令-jar、-server和-cp詳細(xì)比較

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

Java程序常見啟動(dòng)方式

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

java -jar

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

java -jar xxxxxx.jar

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

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

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

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

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

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

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

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

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

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

-server命令可以配合-jar命令使用,也可單獨(dú)使用

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

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

maven build構(gòu)建插件,maven-assembly-plugin,將所有jar構(gòu)建到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命令啟動(dòng)時(shí),用法與-server配合-classpath使用時(shí)類似,不同的是不能與-jar命令一起使用,使用-cp命令時(shí)-jar便會(huì)失效

#!/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

總結(jié) 

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

相關(guān)文章

  • 詳解Java中的靜態(tài)代理模式

    詳解Java中的靜態(tài)代理模式

    這篇文章主要為大家介紹了Java中的靜態(tài)代理模式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-12-12
  • Java實(shí)現(xiàn)權(quán)重隨機(jī)算法詳解

    Java實(shí)現(xiàn)權(quán)重隨機(jī)算法詳解

    平時(shí),經(jīng)常會(huì)遇到權(quán)重隨機(jī)算法,從不同權(quán)重的N個(gè)元素中隨機(jī)選擇一個(gè),并使得總體選擇結(jié)果是按照權(quán)重分布的。本文就詳細(xì)來介紹如何實(shí)現(xiàn),感興趣的可以了解一下
    2021-07-07
  • 深入理解Java之jvm啟動(dòng)流程

    深入理解Java之jvm啟動(dòng)流程

    這篇文章主要介紹了深入理解Java之jvm啟動(dòng)流程,文章內(nèi)容講解的很清晰,有對這方面感興趣的同學(xué)可以研究下
    2021-02-02
  • Spring?Boot?配置文件之類型、加載順序與最佳實(shí)踐記錄

    Spring?Boot?配置文件之類型、加載順序與最佳實(shí)踐記錄

    Spring?Boot?的配置文件是靈活且強(qiáng)大的工具,通過合理的配置管理,可以讓應(yīng)用開發(fā)和部署更加高效,無論是簡單的屬性配置,還是復(fù)雜的多環(huán)境管理,Spring?Boot都提供了便捷的解決方案,本文介紹Spring?Boot?配置文件:類型、加載順序與最佳實(shí)踐,感興趣的朋友一起看看吧
    2025-04-04
  • Mybatis 簡介與原理

    Mybatis 簡介與原理

    MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的持久層框架。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集
    2017-05-05
  • 密碼系統(tǒng)AES私鑰RSA公鑰的加解密示例

    密碼系統(tǒng)AES私鑰RSA公鑰的加解密示例

    這篇文章主要為大家詮釋并介紹了AES私鑰RSA公鑰的加解密系統(tǒng)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Java函數(shù)式編程(十二):監(jiān)控文件修改

    Java函數(shù)式編程(十二):監(jiān)控文件修改

    這篇文章主要介紹了Java函數(shù)式編程(十二):監(jiān)控文件修改,本文是系列文章的第12篇,其它文章請參閱本文底部的相關(guān)文章,需要的朋友可以參考下
    2014-09-09
  • java反射機(jī)制示例詳解

    java反射機(jī)制示例詳解

    反射就是加載類,并解剖出類的各個(gè)組成部分,下面介紹了java反射機(jī)制示例,大家參考使用吧
    2014-01-01
  • SpringBoot注解生效原理全解析

    SpringBoot注解生效原理全解析

    Spring Boot注解自動(dòng)生效依賴于Spring容器和處理機(jī)制,通過掃描、解析配置類生成BeanDefinition,再由容器實(shí)例化,實(shí)現(xiàn)@Autowired等注解的自動(dòng)注入與組件注冊,本文給大家介紹SpringBoot注解生效原理分析,感興趣的朋友一起看看吧
    2025-09-09
  • springcloud實(shí)現(xiàn)注冊中心Eureka

    springcloud實(shí)現(xiàn)注冊中心Eureka

    這篇文章主要介紹了springcloud實(shí)現(xiàn)注冊中心Eureka,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論

宿迁市| 镇安县| 大渡口区| 政和县| 宁南县| 屏边| 永兴县| 大埔区| 鹤峰县| 阿图什市| 盱眙县| 丹寨县| 莫力| 德令哈市| 年辖:市辖区| 基隆市| 怀仁县| 卢龙县| 廊坊市| 营口市| 河源市| 资中县| 班玛县| 威远县| 金川县| 江西省| 白城市| 保康县| 章丘市| 元阳县| 普兰店市| 女性| 临泽县| 辽宁省| 达日县| 厦门市| 永和县| 昌吉市| 禹城市| 育儿| 车致|