赞
踩
java -jar
命令用于运行可执行的JAR
文件。它会自动查找JAR文件中的清单文件(MANIFEST.MF
),并根据清单文件中的Main-Class
属性指定的主类来启动应用程序。
Java 运行时参数
非标准选项运行参数,-X 选项是非标准选项, 如有更改, 恕不另行通知。
-X 打印出NonStandard Options(非标准参数)的帮助信息,并退出jvm
# jvm 内存调整 -Xms 为jvm启动时分配的初始堆的大小,也是堆大小的最小值,比如-Xms200m,表示分配200M -Xmx 为jvm运行过程中分配的最大堆内存,比如-Xmx500m,表示jvm进程最多只能够占用500M内存 -Xss 为jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M, 线程栈用于存储线程的局部变量和方法调用信息。通过调整线程栈的大小,可以控制应用程序的并发性能和内存使用情况。 # 元空间 -XX:MetaspaceSize=256m 参数,您可以指定元空间的初始大小为256MB。这意味着在应用程序启动时,虚拟机会预分配256MB的内存用于存储类的元数据。 -XX:MaxMetaspaceSize=:指定元空间的最大大小。元空间用于存储类的元数据信息。例如,-XX:MaxMetaspaceSize=256m表示将元空间的最大大小设置为256MB。适当设置元空间的大小可以避免类加载和元数据溢出的问题。 # 垃圾回收 -XX:+UseG1GC 启用G1垃圾回收器 -XX:NewRatio=1 设置新生代与老年代的比例,默认值为2;设置新生代和老年代的比例为1:1。 # 日志输出 -Xloggc: 将虚拟机每次垃圾回收的信息写到日志文件中,文件名由file指定,文件格式是平文件,内容和-verbose:gc输出内容相同。 -XX:+PrintGCDateStamps: 用于在GC日志中打印时间戳。会在GC日志中打印出当前系统时间,格式为yyyy-MM-ddTHH:mm:ss.SSS+0800。其中,T表示时间和日期的分隔符,SSS表示毫秒数,+0800表示时区偏移量为东八区。 -XX:+PrintGCDetails: 打印出垃圾回收的详细信息。 # 堆转储 -XX:+HeapDumpOnOutOfMemoryError 当出现 OutOfMemoryError 错误时,这个参数会自动生成堆转储文件,以便分析问题。 -XX:HeapDumpPath 使用-XX:HeapDumpPath配置的时候,需要保证目录的文件夹都是存在,因为它在到处dump文件的时候,不会创建不存在的目录。 堆转储文件是一种记录 Java 应用程序运行时内存状态的文件。分析堆转储文件可以帮助开发人员找到内存泄漏和性能问题等应用程序缺陷。 # GC 线程配置 -XX:ParallelGCThreads STW(stop the world指的是GC事件发生过程中,会产生应用程序的停顿)工作线程数量,超过8,则为设置值的 5/8;大型 SPARC 系统为 5/16; -XX:ConcGCThreads 并发GC线程数,一般为 ParallelGCThreads 的 1/4
堆转储文件的格式?
堆转储文件是一种二进制文件,用于记录 Java 虚拟机在出现 OutOfMemoryError 错误时的堆内存状态。它记录了所有对象的状态和信息,包括对象的类名、实例变量和数组元素的值等。堆转储文件的格式通常是以 .hprof 为后缀的二进制文件。可以使用一些工具来分析和解释这些文件,例如 Eclipse Memory Analyzer 和 Oracle 的 jhat 工具。在使用时,需要注意堆转储文件可能会占用大量磁盘空间。在生产环境中,应该谨慎使用该选项,并定期清理生成的堆转储文件。
-D=:设置系统属性。例如,-Djava.library.path=/path/to/libs设置java.library.path系统属性为/path/to/libs。您可以使用这个参数来配置应用程序的一些属性,例如文件路径、日志级别等。
-Dfile.encoding=:设置默认的文件编码。例如,-Dfile.encoding=UTF-8表示使用UTF-8编码来读取和写入文件。正确设置文件编码可以确保应用程序能够正确处理不同字符集的文本数据。
-Dfoo="some string" , 属性注入 可以使用:System.getProperty("foo")获取。
-verbose:class:打印类加载信息。使用这个参数可以了解应用程序在运行过程中加载的类的详细信息,包括类的名称、来源等。在程序运行的时候究竟会有多少类被加载。
-verbose:gc:打印垃圾回收信息。通过使用这个参数,您可以了解应用程序的垃圾回收情况,包括垃圾回收器的使用情况、回收的对象数量等。
-verbose:jni : 输出native方法调用的相关情况,一般用于诊断jni调用错误信息。
-ea和-da 开启和关闭断言。
-agentlib、-agentpath和javaagent 用于加载代理库。
-server 两种java虚拟机的启动方式,默认是用server模式
完整示例
OOM_HOME=$WORK_PATH/oom
LOG_HOME=$WORK_PATH/console-logs
GC_LOG_HOME=$WORK_PATH/logs/gc-logs
XMS_CONFOG=4G
XMX_CONFIG=4G
JVM_OPTS="-Xms$XMS_CONFOG -Xmx$XMX_CONFIG -Xss256K -server -XX:+UseG1GC -XX:NewRatio=1 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$OOM_HOME -verbose:gc -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$GC_LOG_HOME/gc-%t.log -XX:ParallelGCThreads=11 -XX:ConcGCThreads=4"
# nohup: 后台运行,并输出日志到 $LOG_HOME/console.log
nohup ${JAVA_HOME}/bin/java -jar $JVM_OPTS $APP_FALE > $LOG_HOME/console.log 2>&1 &
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。