nohup jar -jar ${JAVA_OPTS} test.jar &
JAVA_OPTS如下:
APP_NAME=test
-Dservicename=test
APP_MAINCLASS=com.test.mobile.netty.server.Main
-XX:+UseG1GC
-Xmx1024m
-Xms512m
-Djava.io.tmpdir=/opt/tmp/test
-XX:+ParallelRefProcEnabled
-XX:+PrintGCDetails
-XX:+PrintAdaptiveSizePolicy
-XX:+PrintGCDateStamps
-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/jarapp/test/logs
-Djava.awt.headless=true
-Dfile.encoding=utf-8
http_port=12365
InnerContextPaths=test/*
ZK_server=172.22.203.110:2181,172.22.203.86:2181,172.22.203.90:2181
-Dzookeeper.sasl.client=false
JAVA_OPTS
是一个环境变量,用于设置 Java 程序的运行参数。
在该例子中,JAVA_OPTS
包含了多个参数,让我们逐个解释:
-
APP_NAME=test
- 设置应用程序的名称为
test
。
- 设置应用程序的名称为
-
-Dservicename=test
- 定义一个系统属性
servicename
的值为test
。
- 定义一个系统属性
-
APP_MAINCLASS=com.test.mobile.netty.server.Main
- 指定应用程序的主类为
com.test.mobile.netty.server.Main
。
- 指定应用程序的主类为
-
-XX:+UseG1GC
- 使用 G1 垃圾回收器。
-
-Xmx1024m
- 设置 Java 虚拟机的最大内存为 1024MB。
-
-Xms512m
- 设置 Java 虚拟机的初始内存为 512MB。
-
-Djava.io.tmpdir=/opt/tmp/test
- 指定临时文件目录为
/opt/tmp/test
。
- 指定临时文件目录为
-
-XX:+ParallelRefProcEnabled
- 启用并行引用处理。
-
-XX:+PrintGCDetails
- 打印详细的垃圾回收日志。
-
-XX:+PrintAdaptiveSizePolicy
- 打印自适应大小策略的日志。
-
-XX:+PrintGCDateStamps
- 在垃圾回收日志中打印日期时间戳。
-
-XX:+HeapDumpOnOutOfMemoryError
- 在发生内存溢出错误时生成堆转储文件。
-
-XX:HeapDumpPath=/opt/jarapp/test/logs
- 指定堆转储文件的存储路径为
/opt/jarapp/test/logs
。
- 指定堆转储文件的存储路径为
-
-Djava.awt.headless=true
- 设置 Java 运行环境为无图形界面模式。
-
-Dfile.encoding=utf-8
- 设置默认文件编码为 UTF-8。
-
http_port=12365
- 设置一个名为
http_port
的环境变量,其值为12365
。
- 设置一个名为
-
InnerContextPaths=test/*
- 设置一个名为
InnerContextPaths
的环境变量,其值为test/*
,可能用于指定一些内部上下文路径。
- 设置一个名为
-
ZK_server=172.22.203.110:2181,172.22.203.86:2181,172.22.203.90:2181
- 设置一个名为
ZK_server
的环境变量,其值为 ZooKeeper 服务器的地址列表,用逗号分隔。
- 设置一个名为
-
-Dzookeeper.sasl.client=false
- 设置一个名为
zookeeper.sasl.client
的系统属性,其值为false
,可能用于禁用 ZooKeeper 的 SASL 客户端认证。
- 设置一个名为
这些参数一起定义了 Java 应用程序的运行环境和行为。
在你的命令中,nohup jar -jar ${JAVA_OPTS} test.jar &
,${JAVA_OPTS}
会被展开为所有这些参数,从而影响到 test.jar
的启动和运行。
在Java中,使用 -D
参数来设置系统属性的语法是固定的,其中的 D
并不是一个缩写,而是Java虚拟机(JVM)规定的标准参数格式之一。
具体来说:
-
-D
后面紧跟着一个键值对,用来设置系统属性。例如-Dservicename=test
中,servicename
是属性的键,test
是属性的值。 -
这种语法的设计是为了方便从命令行或者启动脚本中传递和设置Java应用程序运行时所需的配置信息,如系统路径、默认编码等。
Java虚拟机在启动时会解析这些参数,并将其转化为相应的系统属性供应用程序使用。
因此,使用 -D
是Java开发中常见的一种设置系统属性的方式,而 D
并没有特定的缩写意义,只是标记参数类型的一部分。
网友评论