天天看點

java VM argument_java之program arguments與VM arguments

program arguments 中的值作為 args[] 的參數傳入的,而 VM Arguments 是設定的虛拟機的屬性。

program arguments 是要傳給你的應用程式的,它通過主函數中的 args 來傳值。 VM arguments是系統的屬性,要傳給 java 虛拟機的。

如圖:是eclipse中的參數傳遞

java VM argument_java之program arguments與VM arguments

我們随便寫個程式Test1

public class Test1 {

public static void main(String[] args){//空格分隔

System. out .println( "Program arguments" );

for ( String str:args ){

System. out .println( str );

}

System. out .println( "VM arguments" );

String syspro1 = "java.util.logging.config.file" ;

System. out .println( System.getProperty (syspro1) );

String syspro2 = "cc" ;

System. out .println( System.getProperty (syspro2) );

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

結果如下:

java VM argument_java之program arguments與VM arguments

注意program arguments的參數是用空格分隔的;比如spring boot架構在後面添加–spring.port=8080 這樣的話就會覆寫到檔案中的該參數,這是spring boot自己設定後的功能,我們也可以自定義一些功能來添加;

這種方法的本質無非是java指令的延伸,如下:

指令:java Test1 aa bb

program arguments到此結束;

接下來我們讨論 VM arguments

例如: VM arguments:java -vm arguments class

vm arguments 可參考:http://blog.csdn.net/kimylrong/article/details/17339263

Java啟動指令可選項(options)大緻可分為标準(-D等)和非标準(-X、-XX)兩種,非标準的可選項不保證在所有平台上都實作,并且未來的版本中可能會被修改且不告知,總之就是不穩定(Unstable)。不過有的非标準可選項還是非常有用的,後面我們會談到。

—————— 下面列出了 JAVA 自身運作需要的一些必要參數

-D set a system property(設定系統屬性) 可通過語句System.getProperties().list(System.out);檢視有哪些參數可以設定。 可設定的參數:

– listing properties –

java.runtime.name=Java(TM) 2 Runtime Environment, Stand…

sun.boot.library.path=C:\Program\Files\Java\jre1.5.0_08\bin

java.vm.version=1.5.0_08-b03

java.vm.vendor=Sun Microsystems Inc.

java.vendor.url=http://java.sun.com/

path.separator=;

java.vm.name=Java HotSpot(TM) Client VM

file.encoding.pkg=sun.io

user.country=CN

sun.os.patch.level=Service Pack 2

java.vm.specification.name=Java Virtual Machine Specification

user.dir=D:\wapSearchLogService

java.runtime.version=1.5.0_08-b03

java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment

java.endorsed.dirs=C:\Program Files\Java\jre1.5.0_08\lib…

os.arch=x86

java.io.tmpdir=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\

line.separator=

java.vm.specification.vendor=Sun Microsystems Inc.

os.name=Windows XP

sun.jnu.encoding=GBK

java.library.path=C:\Program Files\Java\jre1.5.0_08\bin…

java.specification.name=Java Platform API Specification

sun.management.compiler=HotSpot Client

Compiler os.version=5.1

user.home=C:\Documents and

Settings\Administrator

user.timezone=Asia/Shanghai

java.awt.printerjob=sun.awt.windows.WPrinterJob

file.encoding=GBK

java.specification.version=1.5

user.name=Administrator

java.class.path=D:\wapSearchLogService\bin;D:\wapSear…

java.vm.specification.version=1.0

sun.arch.data.model=32

java.home=C:\Program Files\Java\jre1.5.0_08

java.specification.vendor=Sun Microsystems Inc.

user.language=zh

awt.toolkit=sun.awt.windows.WToolkit

java.vm.info=mixed mode, sharing

java.version=1.5.0_08

java.ext.dirs=C:\Program

Files\Java\jre1.5.0_08\lib…

sun.boot.class.path=C:\Program

Files\Java\jre1.5.0_08\lib…

java.vendor=Sun Microsystems Inc.

file.separator=\

java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport…

sun.cpu.endian=little

sun.io.unicode.encoding=UnicodeLittle

sun.desktop=windows

sun.cpu.isalist=amd64

這樣就可以在java中通過System.getProperty(“propertyName”) 獲得環境變量設定的值

常見配置彙總

1.堆設定

-Xms :初始堆大小

-Xmx :最大堆大小

-XX:NewSize=n :設定年輕代大小

-XX:NewRatio=n: 設定年輕代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4

-XX:SurvivorRatio=n :年輕代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:3,表示Eden:Survivor=3:2,一個Survivor區占整個年輕代的1/5

-XX:MaxPermSize=n :設定持久代大小

2.收集器設定

-XX:+UseSerialGC :設定串行收集器

-XX:+UseParallelGC :設定并行收集器

-XX:+UseParalledlOldGC :設定并行年老代收集器

-XX:+UseConcMarkSweepGC :設定并發收集器

3.垃圾回收統計資訊

-XX:+PrintGC

-XX:+PrintGCDetails

-XX:+PrintGCTimeStamps

-Xloggc:filename

4.并行收集器設定

-XX:ParallelGCThreads=n :設定并行收集器收集時使用的CPU數。并行收集線程數。

-XX:MaxGCPauseMillis=n :設定并行收集最大暫停時間

-XX:GCTimeRatio=n :設定垃圾回收時間占程式運作時間的百分比。公式為1/(1+n)

5.并發收集器設定

-XX:+CMSIncrementalMode :設定為增量模式。适用于單CPU情況。

-XX:ParallelGCThreads=n :設定并發收集器年輕代收集方式為并行收集時,使用的CPU數。并行收集線程數。

6.一般環境下的預設參數:

1:jre中的Default VM Arguments: -Xms256M -Xmx640M -XX:PermSize=256m

-XX:MaxPermSize=768m 2:Tomcat的Optional Java VM Arguments: -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m 3:eclipse.ini中: -vmargs-Xms256m-Xmx512m

附:

GC詳解:http://blog.csdn.net/mr__fang/article/details/47723767

原文連結:https://blog.csdn.net/u013289746/article/details/78086351