JAVA启动参数大全
java启动项目参数
java启动项⽬参数启动项⽬参数
当我们启动⼀些项⽬的时候, 希望他们有着不同的端⼝号, ⽽不需要频繁的修改yml配置⽂件这时候我们可以使⽤启动参数解决
使⽤命令启动项⽬
平时我们启动java的项⽬命令是: java -jar xxx.jar/war
我们可以使⽤参数, 来覆盖配置⽂件中设定的服务端⼝: 例如像如下这样
java -jar xxx.jar --server.port=2001
java -jar xxx.jar --server.port=2002
这样就实现了对同⼀个项⽬, 启动多个不同的端⼝
我们也可以覆盖springboot项⽬配置中的⼀些其他配置, 例如配置⽂件多环境
我们⼀般会在配置⽂件中这样配置:
spring:
profiles:
active: dev
我们也可以使⽤命令参数来实现
java -jar xxx.jar --spring.profiles.active=dev
idea配置启动参数
关于main函数的参数的猜测
main⽅法中有个字符串数组类型的参数args
当时我有个疑问, 为什么启动命令的参数springboot能接收到?
当我想起springboot的启动类时, 我好想明⽩了什么
经过测试, 果然和我想的⼀样
总结: args参数其实就是程序的启动参数。
Java-JVM-启动命令行简介:选项,属性,参数
Java-JVM-启动命令⾏简介:选项,属性,参数1. 概述1. 简单介绍⼀下 java 命令⾏相关的参数及属性1. java 命令⾏1. 基本1. 命令> java <mainClass>2. 描述1. 执⾏ Java 类2. 需要准备好编译完成的 mainClass2. 然后1. 命令> java -X<options> -XX<options> -D<properties> <mainClass> [arg0] [arg1]...1. 怎么感觉, 东西⼀下多了好多, 有点懵逼了1. 没事, 慢慢来1. 这些东西, ⼤概分这么⼏块1. 选项2. 属性3. 参数2. 选项1. 概述1. 选项主要的⽬的, 是对 JVM 做⼀些调整2. 分类1. 标注选项1. 通⽤1. 所有版本的 JVM 都要实现的选项2. 例如-version-server-client3. 其他1. 我们后⾯说的 -D, 其实也包含在其中1. 这个我想单独说2. 具体的例⼦, 就不⼀⼀例举了2. 拓展选项1. 拓展1. hotspot 会实现2. 其他 JVM 未必实现2. 例如# 最⼤堆内存-Xmx3800m# 初始堆内存-Xms3800m# 新⽣代内存-Xmn2g# (每个线程)栈内存⼤⼩-Xss128k3. 其他1. 常见参数就是这些1. 不细讲了2. 数值单位1. 可以⾃⼰定, ⽐较灵活3. 重合1. 拓展选项和⾼级选型, 会有部分的重合1. 这个不细说了(就是懒)3. ⾼级选项1. 开发者选项1. 相对⾼级2. 不保证所有 JVM 都有⽀持2. 分类1. ⾼级运⾏时1. 配置 JVM2. ⾼级维护性1. 调试2. 收集系统信息3. ⾼级GC1. 选择 GC2. 控制 GC ⾏为4. ⾼级JIT1. 控制 JIT 的编译⽅式1. 即时编译的那个东西3. 例如# 同 -Xmx-XX:MaxHeapSize=size# 同 -Xms-XX:InitialHeapSize=size# ⽇志-XX:LogFile=path3. ref1.1. 把命令⾏选项, 归为了命令⾏参数2. 只看 Java 启动参数那⼀⼩块1. 虽然说得不完全, 但是简单清晰, 有个直观的认识2.1. 讲得很清晰3.4.5.6.7.3. 属性1. 概述1. 配置环境变量2. 其实也是 java 标准选项的⼀部分2. 命令# 如果 value 带空格, 需要 "" 引起来> java -D<key>=<value> <mainClass>3. 查看1. 代码# 1. 获取 property# 值是 StringSystem.getProperty("<key>")# 2. 设置 propertySystem.setProperty("<key>", "<value>")# 3. 输出所有属性# 略4. ref1.2.3.4.5.4. 参数1. 概述1. 剩下的就是参数了2. 命令> java <mainClass> [arg0] [arg1]...3. 查看1. main ⽅法的参数 args[] 就是输⼊的参数1. String 类型字符串2. 第⼀个参数下标为 03. 如果碰到带空格的整体, 可以⽤ "" 连接4. ref1.。
Java命令参数说明大全
java 命令参数
java 命令参数Java命令参数Java是一种广泛使用的编程语言,它被用于开发各种类型的应用程序。
Java命令参数是指在运行Java程序时传递给JVM的参数。
这些参数可以控制JVM的行为,从而影响Java程序的执行。
Java命令参数分为两类:标准参数和非标准参数。
标准参数是由JVM 定义并且在所有平台上都可用的,而非标准参数则是由各个JVM厂商定义并且只能在特定平台上使用。
一、标准参数1. -version该参数用于显示当前JVM版本信息。
2. -help该参数用于显示JVM支持的所有命令行选项和默认值。
3. -server该参数用于启动服务器模式。
在服务器模式下,JVM会尽可能地优化代码执行速度,但会牺牲一些启动时间。
4. -client该参数用于启动客户端模式。
在客户端模式下,JVM会更注重启动时间,并且会尽可能地优化内存使用。
5. -Xms<size>该参数用于设置堆的初始大小。
例如,“-Xms256m”表示将初始堆大小设置为256MB。
6. -Xmx<size>该参数用于设置堆的最大大小。
例如,“-Xmx1024m”表示将最大堆大小设置为1GB。
7. -XX:PermSize=<size>该参数用于设置永久代的初始大小。
例如,“-XX:PermSize=64m”表示将初始永久代大小设置为64MB。
8. -XX:MaxPermSize=<size>该参数用于设置永久代的最大大小。
例如,“-XX:MaxPermSize=256m”表示将最大永久代大小设置为256MB。
9. -Xss<size>该参数用于设置线程栈的大小。
例如,“-Xss512k”表示将线程栈大小设置为512KB。
10. -verbose[:class|gc|jni]该参数用于启用详细输出。
例如,“-verbose:class”表示在加载类时输出详细信息。
11. -D<name>=<value>该参数用于设置系统属性。
java启动参数
java启动参数-Xms:初始Heap⼤⼩,使⽤的最⼩内存-Xmx:java heap最⼤值,使⽤的最⼤内存上⾯两个值⼀般设置为同样的⼤⼩。
-Xss:每个线程的Stack⼤⼩ -verbose:gc 现实垃圾收集信息-Xloggc:gc.log 指定垃圾收集⽇志⽂件刚刚了解到的⼀些参数(待实践测试)-Xmn:young generation的heap⼤⼩,⼀般设置为Xmx的3、4分之⼀-XX:+UseParNewGC :缩短minor收集的时间-XX:+UseConcMarkSweepGC :缩短major收集的时间顺便把内存使⽤情况的⽅法也贴出来:public static StringgetMemUsage(){long free = ng.Runtime.getRuntime().freeMemory();long total = ng.Runtime.getRuntime().totalMemory();StringBuffer buf = new StringBuffer(); buf.append("[Mem: used ").append((totalfree)>>20) .append("M free ").append(free>>20) .append("M total ").append(total>>20).append("M]");returnbuf.toString();}JVM 中最⼤堆⼤⼩有三⽅⾯限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可⽤虚拟内存限制; 系统的可⽤物理内存限制.32位系统下,⼀般限制在1.5G~2G;64为操作系统对内存⽆限制.安全:apache简单防DDOS攻击的配置,需要从⽹上找⼀个mod_evasive20模块apache防sql注⼊攻击的配置,需要安装mod_security模块。
java jvm参数
java jvm参数
Java 虚拟机(JVM)参数是用来配置 Java 虚拟机运行时环境的一组参数。
它们可以用来控制 JVM 的内存使用情况,调整垃圾回收器的行为,debugging,启用额外的错误检查等等。
1、-Xms:设置JVM初始内存大小,默认是物理内存的1/64。
2、-Xmx:设置JVM最大可用内存大小,一般设置为物理内存的1/4或1/8。
3、-Xss:设置JVM单个线程栈内存大小,通常为
512K到1024K之间。
4、-XX:+UseSerialGC:开启串行垃圾收集器,使用单线程工作,可以提高性能,但是应用程序也会受到影响。
5、-XX:+PrintGCDetails:打印出垃圾回收的详细信息,方便进行性能调优。
6、-XX:MaxPermSize:设置持久代的最大内存大小,默认情况下,持久代的内存大小取决于MaxHeapSize的值。
7、-XX:NewRatio:设置新生代和老年代的比例,默认情况下是2,即新生代是老年代的一半。
8、-XX:SurvivorRatio:设置Eden区和Survivor区的比例,默认情况下是8,即Eden区是Survivor区的八分之一。
vm options参数
vm options参数VM options是指Java虚拟机(JVM)的启动参数,主要用于调整虚拟机的运行参数以优化性能、调试代码、排查问题等。
在本文中,我们将逐步解释常用的VM options参数以及其作用。
一、-Xms和-Xmx参数-Xms参数用于设置JVM的初始堆大小,而-Xmx参数用于设置JVM的最大堆大小。
堆是Java程序运行时对象被分配的区域,这些对象在内存中动态分配和销毁。
通过调整这两个参数,可以优化内存的使用。
-Xms和-Xmx参数必须设置为相等的值,以避免动态调整堆大小的开销。
二、-Xss参数-Xss参数用于设置每个线程的栈大小。
线程栈是每个线程在运行时使用的内存区域,其中存储了线程的局部变量和调用栈信息。
栈大小设置过小会导致StackOverflowError错误,设置过大则会浪费内存。
通常情况下,栈大小为256KB到1MB之间。
三、-XX:PermSize和-XX:MaxPermSize参数(JDK8之前)这两个参数用于设置永久代(PermGen)的大小。
永久代是Java虚拟机的一部分,用于存储类的元数据、常量池、静态变量等信息。
PermGen大小的设置可以避免OutOfMemoryError错误,特别是在运行时涉及大量动态生成类的Web应用程序中。
一般情况下,PermGen大小应设置为较小的值,例如64MB到128MB之间。
四、-XX:MetaspaceSize和-XX:MaxMetaspaceSize参数(JDK8之后)这两个参数用于设置元空间(Metaspace)的大小。
元空间是在JDK8中取代了永久代的新的存储区域,它用于存储类的元数据、常量池、静态变量等信息。
Metaspace的大小默认是依据应用程序的需要动态调整的。
但是可以通过设置-XX:MetaspaceSize和-XX:MaxMetaspaceSize参数来限制元空间的大小,以防止过度使用内存。
五、-XX:NewSize、-XX:MaxNewSize、-XX:SurvivorRatio和-XX:MaxTenuringThreshold参数这些参数用于调整新生代(Young Generation)的大小和分配策略。
java 命令参数
java 命令参数一、概述在Java编程中,命令参数是一种通过命令行传递给Java虚拟机(JVM)的参数。
这些参数可用于控制Java程序的行为,包括程序的启动参数、内存管理、调试和性能分析等。
Java命令参数在开发和部署Java应用时非常重要,正确的使用和配置能够有效提高程序的性能和可维护性。
二、常用Java命令参数以下是一些常用的Java命令参数:1. 启动参数•-classpath:指定程序的类路径,用于加载程序所需的类文件。
•-Dproperty=value:设置系统属性,可以在程序中通过System.getProperty(String key)获取。
•-Xmx<size>:指定JVM堆内存的最大值。
•-Xms<size>:指定JVM堆内存的初始大小。
2. 垃圾回收参数•-XX:+UseSerialGC:使用串行垃圾回收器。
•-XX:+UseParallelGC:使用并行垃圾回收器。
•-XX:+UseConcMarkSweepGC:使用并发标记-清除垃圾回收器。
•-XX:+UseG1GC:使用G1垃圾回收器。
3. 调试参数•-Xdebug:启用调试模式,程序会暂停等待调试器连接。
•-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=<address>:远程调试参数,允许远程调试Java程序。
4. 性能分析参数•-Xprof:启用性能分析,程序会输出运行时的性能统计信息。
•-Xmx<size>:指定JVM堆内存的最大值。
三、常见使用场景和示例1. 指定类路径在执行Java程序时,可以通过-classpath参数指定程序所需的类路径。
例如:java -classpath mylib.jar:myclasses com.example.MyProgram这个命令会将mylib.jar和myclasses目录添加到类路径中,并执行com.example.MyProgram类。
JavaJVM启动参数
JavaJVM启动参数JVM 启动参数java-Xmx4096m // 设置JVM最⼤可⽤内存为4096m。
-Xms4096m // 设置JVM促使内存为4096m。
此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn2048m // 设置年轻代⼤⼩为2048M。
整个堆⼤⼩=年轻代⼤⼩ + 年⽼代⼤⼩ + 持久代⼤⼩。
持久代⼀般固定⼤⼩为64m,所以增⼤年轻代后,将会减⼩年⽼代⼤⼩。
此值对系统性能影响较⼤,Sun官⽅推荐配置为整个堆的3/8。
-XX:MetaspaceSize=256m //JDK8⽤metaSpace区域来代替了以前的永久区,这个区域主要存放被加载的class信息,我⼿上⼀个项⽬每次启动时候都会伴随⼀次fullgc-XX:+UseConcMarkSweepGC //并⾏并发CMS垃圾回收器-XX:ParallelGCThreads=2-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimeStamps-XX:+PrintHeapAtGC-jar service-0.0.1-SNAPSHOT.jarjava启动参数共分为三类其⼀是标准参数(-),所有的JVM实现都必须实现这些参数的功能,⽽且向后兼容;其⼆是⾮标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满⾜,且不保证向后兼容;其三是⾮Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使⽤;标准参数中⽐较有⽤的:verbose-verbose:class输出jvm载⼊类的相关信息,当jvm报告说找不到类或者类冲突时可此进⾏诊断。
-verbose:gc输出每次GC的相关情况。
-verbose:jni输出native⽅法调⽤的相关情况,⼀般⽤于诊断jni调⽤错误信息。
⾮标准参数⼜称为扩展参数⼀般⽤到最多的是-Xms512m 设置JVM促使内存为512m。
java -jar启动参数规则
java -jar启动参数规则
在Java中,使用`-jar`启动参数可以运行一个打包成jar文件的程序。
以下是`-jar`启动参数的规则:
1. 在命令行中输入`java -jar <jar文件名>`,启动jar文件。
2. `<jar文件名>`应该包括`.jar`文件扩展名。
3. 如果在指定的路径中找不到指定的jar文件,将会在classpath中查找该jar文件。
4. 如果在classpath中找到了该jar文件,将会使用它来启动应用程序。
5. 如果在classpath中找不到该jar文件,将会报错。
6. 如果指定的jar文件不存在,将会报错。
7. 如果指定的jar文件存在,但是无法访问,将会报错。
8. 如果指定的jar文件已经存在,并且可以使用,将会启动该jar文件中的主类。
9. 如果指定的jar文件已经存在,但是无法访问,将会报错。
10. 如果在指定的jar文件中找不到主类,将会报错。
11. 如果在指定的jar文件中找到了主类,将会运行该主类中的main方法来启动应用程序。
Java命令行运行参数大全
Java命令行运行参数大全Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME'bin'java –option 来启动,-option为虚拟机参数,JAVA_HOME为JDK安装路径,通过这些参数可对虚拟机的运行状态进行调整,掌握参数的含义可对虚拟机的运行模式有更深入理解。
一、查看参数列表:虚拟机参数分为基本和扩展两类,在命令行中输入JAVA_HOME'bin'java 就可得到基本参数列表,在命令行输入JAVA_HOME'bin'java –X 就可得到扩展参数列表。
二、基本参数说明:1. -client,-server这两个参数用于设置虚拟机使用何种运行模式,client模式启动比较快,但运行时性能和内存管理效率不如server模式,通常用于客户端应用程序。
相反,server模式启动比client慢,但可获得更高的运行性能。
在windows上,缺省的虚拟机类型为client模式,如果要使用server模式,就需要在启动虚拟机时加-server参数,以获得更高性能,对服务器端应用,推荐采用server模式,尤其是多个CPU的系统。
在Linux,Solaris上缺省采用server模式。
2. -hotspot含义与client相同,jdk1.4以前使用的参数,jdk1.4开始不再使用,代之以client。
3. -classpath,-cp虚拟机在运行一个类时,需要将其装入内存,虚拟机搜索类的方式和顺序如下:Bootstrap classes,Extension classes,User classes。
Bootstrap 中的路径是虚拟机自带的jar或zip文件,虚拟机首先搜索这些包文件,用System.getProperty('sun.boot.class.path')可得到虚拟机搜索的包名。
Java设置系统参数和运行参数
Java设置系统参数和运⾏参数系统参数系统级全局变量,该参数在程序中任何位置都可以访问到。
优先级最⾼,覆盖程序中同名配置。
系统参数的标准格式为:-Dargname=argvalue,多个参数之间⽤空格隔开,如果参数值中间有空格,则⽤引号括起来。
其中,参数名可以是 Java 默认的,此类参数由 JVM 虚拟机⾃动识别并⽣效,例如,-Dfile.encoding=UTF-8 ⽤于指定⽂件编码格式;也可以是⽤户⾃定义的,例如,-Dmy=user,程序中可以读取该参数值,执⾏相关逻辑。
虚拟机系统参数中设置的参数键值对,在程序中可以⽤ System.getProperty("propertyName") 获取对应参数值。
public static void main(String[] args) {String result = System.getProperty("argname");System.out.println("argname: " + result);}运⾏参数main ⽅法执⾏时传⼊的参数值,如果参数有多个,⽤空格分开。
main ⽅法的⼀般格式为:public static void main(String[] args),其中,Stringp[] args就是存储运⾏参数的变量,在程序中可以直接使⽤。
public static void main(String[] args) {if (args.length > 0) {for (int i = 0; i < args.length; i++) {System.out.println("第" + i + "个参数为: " + args[i]);}}}命令⾏中的参数设置java 命令的基本格式为java [-options] class [args...],其中:[-options]配置 Java 系统参数[args…]配置 Java 运⾏参数⽰例:java -Dfile.encoding=UTF-8 -Dargname=argvalue Test hi a b c dIDEA 中的参数设置Run- Edit Configurations... - Spring Boot - App - Configuration - EnvironmentVM options: 设置系统参数Program arguments: 设置运⾏参数。
58、java虚拟机介绍:java程序启动参数设置优化
java虚拟机介绍:java程序启动参数设置优化一、GC与内存JVM里的GC(Garbage Collection)的算法有很多种,现在比较常用的是分代收集(generational collection,也是SUN VM使用的,J2SE1.2之后引入),即将内存分为几个区域,将不同生命周期的对象放在不同区域里:young generation,tenured generation和permanet generation。
绝大部分的objec 被分配在young generation(生命周期短),并且大部分的object在这里die。
当young generation满了之后,将引发minor collection(YGC)。
在minor collection后存活的object会被移动到tenured generation(生命周期比较长)。
最后,tenured generation满之后触发major collection。
major collection (Full gc)会触发整个heap的回收,包括回收young generation。
permanet generation区域比较稳定,主要存放classloader信息。
young generation有eden、2个survivor 区域组成。
其中一个survivor区域一直是空的,是eden区域和另一个survivor区域在下一次copy collection后活着的objecy的目的地。
object在survivo区域被复制直到转移到tenured区。
我们要尽量减少Full gc 的次数(tenured generation 一般比较大,收集的时间较长,频繁的Full gc会导致应用的性能收到严重的影响)。
堆内存GC:JVM(采用分代回收的策略),用较高的频率对年轻的对象(young generation)进行YGC,而对老对象(tenured generation)较少(tenured generation 满了后才进行)进行Full GC。
JAVA启动参数大全
JAVA启动参数大全1.标准启动参数:-classpath:指定找到类文件的位置。
-classpath/-cp:设置classpath的值。
-jre-restrict-search:限制JRE版本。
-no-jre-restrict-search:不限制JRE版本。
-verbose:class:显示类加载信息。
2.高级运行时环境参数:-ea、-enableassertions:启用断言。
-da、-disableassertions:禁用断言。
-esa、-enablesystemassertions:启用系统断言。
-dsa、-disablesystemassertions:禁用系统断言。
-enablesystem-audit:启用系统审核。
-disablesystem-audit:禁用系统审核。
-doescapeanalysis:启用逃逸分析。
-dontescapeanalysis:禁用逃逸分析。
3.线程参数:-threadstacksize:设置每个线程的堆栈大小。
-XX:+AggressiveOpts:启用一组性能优化参数。
-XX:ParallelGCThreads:设置垃圾收集器线程数。
4.堆参数:-Xms:设置初始堆大小。
-Xmx:设置最大堆大小。
-Xmn:设置新生代大小。
-XX:NewRatio:设置年轻代与年老代的比率。
-XX:SurvivorRatio:设置Eden区与Survivor区的比率。
-XX:MaxTenuringThreshold:设置对象进入年老代的年龄。
-XX:InitiatingHeapOccupancyPercent:设置触发GC的堆空间占用百分比。
-XX:MetaspaceSize:设置元空间大小。
5.垃圾收集参数:-XX:+UseSerialGC:使用串行垃圾收集器。
-XX:+UseParallelGC:使用并行垃圾收集器。
-XX:+UseParallelOldGC:使用并行老年代垃圾收集器。
如何设置Java虚拟机JVM启动内存参数
如何设置Java虚拟机JVM启动内存参数Tomcat默认的Java虚拟机JVM启动内存参数⼤约只有64MB或者128MB,⾮常⼩,远远没有利⽤现在服务器的强⼤内存,所以要设置Java虚拟机JVM启动内存参数。
具体设置⽅法为:Tomcat修改TOMCAT_HOME/bin/catalina.bat,在[echo Using CATALINA_BASE: "%CATALINA_BASE%"] 上⾯加⼊,⽐如:set JAVA_OPTS= -server -Xms1536m -Xmx1536m或者JAVA_OPTS="-server -Xms1536m -Xmx1536m",服务器模式参数-server不加也可以,就变成set JAVA_OPTS= -Xms1536m -Xmx1536m或者JAVA_OPTS=" -Xms1536m -Xmx1536m",1536m只是举个例⼦,具体可以在DOS命令窗⼝中测试能使⽤多⼤的Java虚拟机内存,能显⽰JDK/JRE/JVM版本号的就说明能使⽤命令中设置的Java虚拟机内存,如执⾏Java -Xmx1280m -version;Java -Xmx1408m -version;Java -Xmx1536m -version;Java -Xmx1664m -version;Java -Xmx2048m -version;⽐如在下列DOS命令窗⼝中执⾏java -Xmx1024m -version,显⽰出JDK/JRE/JVM版本号,说明最⼤能使⽤1024MB的Java虚拟机内存:下图中执⾏Java -Xmx1152m -version,不能显⽰出JDK/JRE/JVM版本号,说明不能使⽤1152MB的Java虚拟机内存:等等,但是JVM启动内存参数也不可能⽆限增⼤,因为他受限于物理内存和操作系统的限制,Windows操作系统下⼀般可以使⽤1.6GB左右的Java虚拟机内存,有些JDK如Jrockit可能最⼤可达1.9GB左右,此外,Linux、⼩型机AIX等情况可以较⼤。
javajvm参数
javajvm参数Java虚拟机(JVM)是一个重要的Java运行环境,它的性能和稳定性直接影响到Java应用的运行效果。
在JVM的运行过程中,通过设置一些参数可以对其进行优化,提高Java应用的性能和稳定性。
以下是一些常用的JVM参数:1. -Xmx:设置JVM最大可用内存,可以避免OutOfMemoryError 异常的发生。
例如,-Xmx512m表示JVM最大可用内存为512MB。
2. -Xms:设置JVM初始内存大小,避免JVM启动时内存不足的情况。
例如,-Xms256m表示JVM初始内存大小为256MB。
3. -Xmn:设置JVM年轻代内存大小,可以通过调整年轻代内存的大小来优化GC效率。
例如,-Xmn128m表示JVM年轻代内存大小为128MB。
4. -XX:PermSize:设置JVM永久代初始大小,避免因永久代内存不足而导致的OutOfMemoryError异常。
例如,-XX:PermSize=64m 表示JVM永久代初始大小为64MB。
5. -XX:MaxPermSize:设置JVM永久代最大可用内存大小,避免因永久代内存不足而导致的OutOfMemoryError异常。
例如,-XX:MaxPermSize=256m表示JVM永久代最大可用内存为256MB。
6. -XX:SurvivorRatio:设置JVM年轻代中Eden区与Survivor 区的比例。
例如,-XX:SurvivorRatio=8表示Eden区和Survivor区的比例为8:1。
7. -XX:+UseConcMarkSweepGC:开启CMS垃圾收集器,在高并发环境下可以提高GC效率。
8. -XX:+UseParallelGC:开启并行垃圾收集器,在多核CPU环境下可以提高GC效率。
以上是一些常用的JVM参数,根据不同的应用场景和需求,可以通过调整这些参数来优化JVM的性能和稳定性。
Springboot项目java-jar启动jar包参数详解
Springboot项⽬java-jar启动jar包参数详解命令实例:nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profiles.active=daily -verbose:class &说明:--spring.profiles.active=daily,这个可以在spring-boot启动中指定系统变量,多环境(测试、预发、线上配置)的区分在排查jar包冲突时,可以指定启动的-verbose:class 打印出启动的应⽤实际加载类的路径,来排查来源。
jvm堆设值: -Xms500m -Xmx500m -Xmn250m -Xss256knohup 不挂断地运⾏命令;& 在后台运⾏,⼀般两个⼀起⽤。
eg:nohup command &-server:服务器模式,在多个CPU时性能佳,启动慢但性能好,能合理管理内存。
-XX:+HeapDumpOnOutOfMemoryError:在堆溢出时保存快照可以⽤ java -X命令在终端查询所有的java堆参数:-Xmixed 混合模式执⾏ (默认)-Xint 仅解释模式执⾏-Xbootclasspath:<⽤ : 分隔的⽬录和 zip/jar ⽂件>设置搜索路径以引导类和资源-Xbootclasspath/a:<⽤ : 分隔的⽬录和 zip/jar ⽂件>附加在引导类路径末尾-Xbootclasspath/p:<⽤ : 分隔的⽬录和 zip/jar ⽂件>置于引导类路径之前-Xdiag 显⽰附加诊断消息-Xnoclassgc 禁⽤类垃圾收集-Xincgc 启⽤增量垃圾收集-Xloggc:<file> 将 GC 状态记录在⽂件中 (带时间戳)-Xbatch 禁⽤后台编译-Xms<size> 设置初始 Java 堆⼤⼩-Xmx<size> 设置最⼤ Java 堆⼤⼩-Xss<size> 设置 Java 线程堆栈⼤⼩-Xprof 输出 cpu 配置⽂件数据-Xfuture 启⽤最严格的检查, 预期将来的默认值-Xrs 减少 Java/VM 对操作系统信号的使⽤ (请参阅⽂档)-Xcheck:jni 对 JNI 函数执⾏其他检查-Xshare:off 不尝试使⽤共享类数据-Xshare:auto 在可能的情况下使⽤共享类数据 (默认)-Xshare:on 要求使⽤共享类数据, 否则将失败。
java参数
java参数java 命令⾏运⾏的语法如下:java [ options ] class [ arguments ]java [ options ] -jar file.jar [ arguments ]这⾥记录 options 可以使⽤的选项对于 boolean 型 options, -X:+<option> 表⽰打开,-XX:-<option> 表⽰关闭对于 numeric 型 options, -X:<option>=<number>, number 可以包含 k,K,m,M,g,G 表⽰ KB,MB,GB 对于 string 型 options, -X:<option>=<string>标准 options (⽆前缀)-client以 client 模式运⾏ java 程序-server以 server 模式运⾏ java 程序client / server 模式说明: client 模式启动速度快,适合桌⾯应⽤ server 模式启动速度慢⼀点,但运⾏速度快,适合服务器使⽤-classpath classpath-cp classpath指定 class path-Dproperty=value设定系统参数-jar指定要执⾏的 jar ⽂件-javaagent:jarpath[=options]加载 java 代理-agentlib:libname[=options]加载本地代理库-agentpath:pathname[=options]本地代理库路径-verbose-verbose:class -verbose:gc -verbose:jni 列出详细信息列出加载的类显⽰GC信息显⽰JNI信息-splash:imagepath指定启动画⾯⾮标准 options(-X前缀,不稳定)-X显⽰⽀持的⾮标准 options-Xint解释执⾏模式-Xbatch禁⽤后台编译-Xbootclasspath:bootclasspath指定⽤ ; 分隔的⽬录和 zip/jar ⽂件设置搜索路径以引导类和资源-Xbootclasspath/a:path指定⽤ ; 分隔的⽬录和 zip/jar ⽂件附加在引导类路径末尾-Xbootclasspath/p:path指定⽤ ; 分隔的⽬录和 zip/jar ⽂件置于引导类路径之前-Xcheck:jni对 JNI 函数执⾏额外的检查-Xfuture执⾏严格的 class ⽂件格式检查-Xnoclassgc禁⽤垃圾收集-Xincgc启⽤增量垃圾收集-Xincgc启⽤增量垃圾收集-Xloggc:file将 GC 状态记录在⽂件中 (带时间戳)-Xprof输出 cpu 配置⽂件数据-Xrs减少 java vm 使⽤的操作系统信号-Xverify:mode设置 bytecode 验证器的模式-Xmnn设置新⽣代的⼤⼩-Xmsn堆的初始⼤⼩-Xmxn堆的最⼤⼤⼩-Xssn线程栈⼤⼩-XX:PermSize=n永久区初始⼤⼩-XX:MaxPermSize=n永久区最⼤⼤⼩-XX:NewRatio=n⽼年代 / 新⽣代的⽐例,默认是 2-XX:Newsize=n设置新⽣代的⼤⼩-XX:SurvivorRatio=n Eden/Survivor 的⽐例,默认是 8-XX:PretenureSizeThresHold直接晋升到⽼年代的对象的⼤⼩,设置这个参数后,⼤于这个参数的对象将直接在⽼年代分配-XX:MaxTenuringThreshold=n晋升到⽼年代的对象年龄。
java虚拟机启动参数(转)
java虚拟机启动参数(转)在Java、J2EE⼤型应⽤中,JVM⾮标准参数的配置直接关系到整个系统的性能。
JVM⾮标准参数指的是JVM底层的⼀些配置参数,这些参数在⼀般开发中默认即可,不需要任何配置。
但是在⽣产环境中,为了提⾼性能,往往需要调整这些参数,以求系统达到最佳新能。
另外这些参数的配置也是影响系统稳定性的⼀个重要因素,相信⼤多数Java开发⼈员都见过“OutOfMemory”类型的错误。
呵呵,这其中很可能就是JVM参数配置不当或者就没有配置没意识到配置引起的。
为了说明这些参数,还需要说说JDK中的命令⾏⼯具⼀些知识做铺垫。
⾸先看如何获取这些命令配置信息说明:假设你是windows平台,你安装了J2SDK,那么现在你从cmd控制台窗⼝进⼊J2SDK安装⽬录下的bin⽬录,然后运⾏java命令,出现如下结果,这些就是包括java.exe⼯具的和JVM的所有命令都在⾥⾯。
-----------------------------------------------------------------------D:\j2sdk15\bin>javaUsage: java [-options] class [args...](to execute a class)or java [-options] -jar jarfile [args...](to execute a jar file)where options include:-client to select the "client" VM-server to select the "server" VM-hotspot is a synonym for the "client" VM [deprecated]The default VM is client.-cp <class search path of directories and zip/jar files>-classpath <class search path of directories and zip/jar files>A ; separated list of directories, JAR archives,and ZIP archives to search for class files.-D<name>=<value>set a system property-verbose[:class|gc|jni]enable verbose output-version print product version and exit-version:<value>require the specified version to run-showversion print product version and continue-jre-restrict-search | -jre-no-restrict-searchinclude/exclude user private JREs in the version search-? -help print this help message-X print help on non-standard options-ea[:<packagename>...|:<classname>]-enableassertions[:<packagename>...|:<classname>]enable assertions-da[:<packagename>...|:<classname>]-disableassertions[:<packagename>...|:<classname>]disable assertions-esa | -enablesystemassertionsenable system assertions-dsa | -disablesystemassertionsdisable system assertions-agentlib:<libname>[=<options>]load native agent library <libname>, e.g. -agentlib:hprofsee also, -agentlib:jdwp=help and -agentlib:hprof=help-agentpath:<pathname>[=<options>]load native agent library by full pathname-javaagent:<jarpath>[=<options>]load Java programming language agent, see ng.instrument-----------------------------------------------------------------------在控制台输出信息中,有个-X(注意是⼤写)的命令,这个正是查看JVM配置参数的命令。
JAVA启动参数大全详解
前段时间系统升级时遭遇了OOM,具体解决过程见遭遇 OutOfMemoryError ;为了巩固对于java启动各项参数的认识,决定将所有参数列举出来,并一一解释,以便后查;java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;本文主要描述标准参数部分,剩下的两个部分将会陆续推出;标准参数列表如下:-client设置jvm使用client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或者PC应用开发和调试。
-server设置jvm使server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。
在具有64位能力的jdk环境下将默认启用该模式,而忽略-client参数。
-agentlib:libname[=options]用于装载本地lib包;其中libname为本地代理库文件名,默认搜索路径为环境变量PATH中的路径,options为传给本地库启动时的参数,多个参数之间用逗号分隔。
在 Windows 平台上jvm搜索本地库名为libname.dll的文件,在linux上jvm搜索本地库名为libname.so的文件,搜索路径环境变量在不同系统上有所不同,比如Solaries 上就默认搜索LD_LIBRARY_PATH。
比如:-agentlib:hprof用来获取jvm的运行情况,包括CPU、内存、线程等的运行数据,并可输出到指定文件中;windows中搜索路径为JRE_HOME/bin /hprof.dll。
-agentpath:pathname[=options]按全路径装载本地库,不再搜索PATH中的路径;其他功能和agentlib相同;更多的信息待续,在后续的JVMTI部分会详述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JAVA启动参数大全文章分类:Java编程转自:/sawxb/archive/2009/06/15/4269007.aspx前段时间系统升级时遭遇了OOM,具体解决过程见遭遇 OutOfMemoryError;为了巩固对于java启动各项参数的认识,决定将所有参数列举出来,并一一解释,以便后查;java启动参数共分为三类;其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容;其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容;其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用;本文主要描述标准参数部分,剩下的两个部分将会陆续推出;标准参数列表如下:-client设置jvm使用client模式,特点是启动速度比较快,但运行时性能和内存管理效率不高,通常用于客户端应用程序或者PC应用开发和调试。
-server设置jvm使server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。
在具有64位能力的jdk环境下将默认启用该模式,而忽略-client参数。
-agentlib:libname[=options]用于装载本地lib包;其中libname为本地代理库文件名,默认搜索路径为环境变量PATH中的路径,options为传给本地库启动时的参数,多个参数之间用逗号分隔。
在 Windows 平台上jvm搜索本地库名为libname.dll的文件,在linux上jvm搜索本地库名为libname.so的文件,搜索路径环境变量在不同系统上有所不同,比如Solaries 上就默认搜索LD_LIBRARY_PATH。
比如:-agentlib:hprof用来获取jvm的运行情况,包括CPU、内存、线程等的运行数据,并可输出到指定文件中;windows中搜索路径为JRE_HOME/bin /hprof.dll。
-agentpath:pathname[=options]按全路径装载本地库,不再搜索PATH中的路径;其他功能和agentlib相同;更多的信息待续,在后续的JVMTI部分会详述。
-classpath classpath-cp classpath告知jvm搜索目录名、jar文档名、zip文档名,之间用分号;分隔;使用-classpath 后jvm将不再使用CLASSPATH中的类搜索路径,如果-classpath和CLASSPATH都没有设置,则jvm使用当前路径(.)作为类搜索路径。
jvm搜索类的方式和顺序为:Bootstrap,Extension,User。
Bootstrap中的路径是jvm自带的jar或zip文件,jvm首先搜索这些包文件,用 System.getProperty("sun.boot.class.path")可得到搜索路径。
Extension是位于JRE_HOME/lib/ext目录下的jar文件,jvm在搜索完Bootstrap 后就搜索该目录下的jar文件,用 System.getProperty("java.ext.dirs")可得到搜索路径。
User搜索顺序为当前路径.、CLASSPATH、-classpath,jvm最后搜索这些目录,用 System.getProperty("java.class.path")可得到搜索路径。
-Dproperty=value设置系统属性名/值对,运行在此jvm之上的应用程序可用System.getProperty("property")得到value的值。
如果value中有空格,则需要用双引号将该值括起来,如-Dname="space string"。
该参数通常用于设置系统级全局变量值,如配置文件路径,以便该属性在程序中任何地方都可访问。
-enableassertions[:<package name>"..." | :<class name> ]-ea[:<package name>"..." | :<class name> ]上述参数就用来设置jvm是否启动断言机制(从JDK 1.4开始支持),缺省时jvm关闭断言机制。
用-ea 可打开断言机制,不加<packagename>和classname时运行所有包和类中的断言,如果希望只运行某些包或类中的断言,可将包名或类名加到-ea之后。
例如要启动包com.wombat.fruitbat中的断言,可用命令java-ea:com.wombat.fruitbat...<Main Class>。
-disableassertions[:<package name>"..." | :<class ; ]-da[:<package name>"..." | :<class name> ]用来设置jvm关闭断言处理,packagename和classname的使用方法和-ea相同,jvm默认就是关闭状态。
该参数一般用于相同package内某些class不需要断言的场景,比如com.wombat.fruitbat需要断言,但是 com.wombat.fruitbat.Brickbat该类不需要,则可以如下运行:java -ea:com.wombat.fruitbat...-da:com.wombat.fruitbat.Brickbat <Main Class>。
-enablesystemassertions激活系统类的断言。
-disablesystemassertions-dsa关闭系统类的断言。
-jar指定以jar包的形式执行一个应用程序。
要这样执行一个应用程序,必须让jar包的manifest文件中声明初始加载的Main-class,当然那Main-class必须有public static void main(String[] args)方法。
-javaagent:jarpath[=options]指定jvm启动时装入java语言设备代理。
Jarpath文件中的mainfest文件必须有Agent-Class属性。
代理类也必须实现公共的静态public static void premain(String agentArgs, Instrumentation inst)方法(和main方法类似)。
当jvm初始化时,将按代理类的说明顺序调用premain方法;具体参见 ng.instrument软件包的描述。
-verbose-verbose:class输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。
-verbose:gc输出每次GC的相关情况。
-verbose:jni输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
-version输出java的版本信息,比如jdk版本、vendor、model。
-version:release指定class或者jar运行时需要的jdk版本信息;若指定版本未找到,则以能找到的系统默认jdk版本执行;一般情况下,对于jar文件,可以在 manifest文件中指定需要的版本信息,而不是在命令行。
release中可以指定单个版本,也可以指定一个列表,中间用空格隔开,且支持复杂组合,比如:-version:"1.5.0_04 1.5*&1.5.1_02+"指定class或者jar需要jdk版本为1.5.0_04或者是1.5系列中比1.5.1_02更高的所有版本。
-showversion输出java版本信息(与-version相同)之后,继续输出java的标准参数列表及其描述。
-?输出java标准参数列表及其描述。
-X输出非标准的参数列表及其描述。
以上的这些参数我们经常会在很多情况下用到多个的组合,比如我们在用JProfiler进行跟踪监控时,需要在被监控java启动参数中加上如下配置:-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/usr/local/jprofil er5/bin/agent.jar其中就用到两个-agentlib和-X参数,bootclasspath参数的详细信息将会在非标准参数中详细说明。
==================非标准参数又称为扩展参数,其列表如下:-Xint设置jvm以解释模式运行,所有的字节码将被直接执行,而不会编译成本地码。
-Xbatch关闭后台代码编译,强制在前台编译,编译完成之后才能进行代码执行;默认情况下,jvm在后台进行编译,若没有编译完成,则前台运行代码时以解释模式运行。
-Xbootclasspath:bootclasspath让jvm从指定路径(可以是分号分隔的目录、jar、或者zip)中加载bootclass,用来替换jdk的rt.jar;若非必要,一般不会用到;-Xbootclasspath/a:path将指定路径的所有文件追加到默认bootstrap路径中;-Xbootclasspath/p:path让jvm优先于bootstrap默认路径加载指定路径的所有文件;-Xcheck:jni对JNI函数进行附加check;此时jvm将校验传递给JNI函数参数的合法性,在本地代码中遇到非法数据时,jmv将报一个致命错误而终止;使用该参数后将造成性能下降,请慎用。
-Xfuture让jvm对类文件执行严格的格式检查(默认jvm不进行严格格式检查),以符合类文件格式规范,推荐开发人员使用该参数。
-Xnoclassgc关闭针对class的gc功能;因为其阻止内存回收,所以可能会导致OutOfMemoryError错误,慎用;-Xincgc开启增量gc(默认为关闭);这有助于减少长时间GC时应用程序出现的停顿;但由于可能和应用程序并发执行,所以会降低CPU对应用的处理能力。
-Xloggc:file与-verbose:gc功能类似,只是将每次GC事件的相关情况记录到一个文件中,文件的位置最好在本地,以避免网络的潜在问题。
若与verbose命令同时出现在命令行中,则以-Xloggc为准。
-Xmsn指定jvm堆的初始大小,默认为物理内存的1/64,最小为1M;可以指定单位,比如k、m,若不指定,则默认为字节。