java之program arguments与VM arguments 你的名字 2022-06-08 12:20 147阅读 0赞 > program arguments 中的值作为 args\[\] 的参数传入的,而 VM Arguments 是设置的虚拟机的属性。 > program arguments 是要传给你的*应用程序*的,它通过主函数中的 args 来传值。 VM arguments是系统的属性,要传给 *java 虚拟机*的。 如图:是eclipse中的参数传递 ![这里写图片描述][SouthEast] 我们随便写个程序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) ); } } 结果如下: ![这里写图片描述][SouthEast 1] 注意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][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/][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][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][http_blog.csdn.net_mr_fang_article_details_47723767] [SouthEast]: /images/20220608/ed8fd29f3012461bbe7da19e923f4e7c.png [SouthEast 1]: /images/20220608/3731693ab56542d596d8ccdd429496ee.png [http_blog.csdn.net_kimylrong_article_details_17339263]: http://blog.csdn.net/kimylrong/article/details/17339263 [http_java.sun.com]: http://java.sun.com/ [http_java.sun.com_cgi-bin_bugreport]: http://java.sun.com/cgi-bin/bugreport [http_blog.csdn.net_mr_fang_article_details_47723767]: http://blog.csdn.net/mr__fang/article/details/47723767
还没有评论,来说两句吧...