从 Java 中的外部文件读取垃圾收集 (GC) 配置 | Spring开机
Read the Garbage Collection (GC) configuration from external file in Java | Spring Boot
运行 具有给定 GC 配置的 spring 引导 jar 文件
- -Xloggc:/file/path/gc.log
- -XX:+PrintGCTimeStamps
- -XX:+PrintGCDateStamps
- -XX:+PrintGCDetails
但是,当我们是 运行 像
这样的 jar 时,而不是在命令行中传递所有这些 GC 信息数据
java -Dspring.profiles.active=<env-name> -Xmx5G -Xms2G -XX:MaxMetaspaceSize=2G -XX:+UseG1GC -Xloggc:/file/path/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -jar application.jar
我可以使用任何其他方法从外部文件读取配置并将其传递给 jar
编辑:
正如 Slaw 在使用 java Command-Line Argument Files
的评论中提到的
创建了一个名称为 args
的文件,其中包含的数据是
-Dspring.profiles.active=<env-name> -Xmx5G -Xms2G -XX:MaxMetaspaceSize=2G -XX:+UseG1GC -Xloggc:/file/path/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -jar application.jar
by 运行 jar 喜欢
java @args
出现错误
Error: Could not find or load main class @args
无法找到 Main class。我认为它没有识别 args
文件中的 jar。
如果您使用的是 Java 9 及更高版本,command line argument files (@file1
) 应该 工作1.
Java 9 及更高版本的另一个选项是设置 JDK_JAVA_OPTIONS
环境变量。这给出了一个选项列表,这些选项将自动添加到 java
命令行的 JVM 选项之前。
对于 Java 8 及更早版本,您的选择更加有限:
为 java
命令或应用程序的命令行编写 shell 包装脚本、shell 函数或 shell 别名。
使用java
命令时显式添加环境变量;例如
$ java $STD_OPTS my.app.Main args ...
你可以想象实现一个自定义启动器(在 C 中),并且可以做一些聪明的事情,比如模拟 Java 9 的 @file 机制。
1 - 根据症状,我认为您使用 @file
的尝试失败了,因为在适当的目录中找不到该文件,或者因为您正在使用 Java 8 或更早。
运行 具有给定 GC 配置的 spring 引导 jar 文件
- -Xloggc:/file/path/gc.log
- -XX:+PrintGCTimeStamps
- -XX:+PrintGCDateStamps
- -XX:+PrintGCDetails
但是,当我们是 运行 像
这样的 jar 时,而不是在命令行中传递所有这些 GC 信息数据java -Dspring.profiles.active=<env-name> -Xmx5G -Xms2G -XX:MaxMetaspaceSize=2G -XX:+UseG1GC -Xloggc:/file/path/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -jar application.jar
我可以使用任何其他方法从外部文件读取配置并将其传递给 jar
编辑:
正如 Slaw 在使用 java Command-Line Argument Files
的评论中提到的创建了一个名称为 args
的文件,其中包含的数据是
-Dspring.profiles.active=<env-name> -Xmx5G -Xms2G -XX:MaxMetaspaceSize=2G -XX:+UseG1GC -Xloggc:/file/path/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+PrintGCDetails -jar application.jar
by 运行 jar 喜欢
java @args
出现错误
Error: Could not find or load main class @args
无法找到 Main class。我认为它没有识别 args
文件中的 jar。
如果您使用的是 Java 9 及更高版本,command line argument files (@file1
) 应该 工作1.
Java 9 及更高版本的另一个选项是设置 JDK_JAVA_OPTIONS
环境变量。这给出了一个选项列表,这些选项将自动添加到 java
命令行的 JVM 选项之前。
对于 Java 8 及更早版本,您的选择更加有限:
为
java
命令或应用程序的命令行编写 shell 包装脚本、shell 函数或 shell 别名。使用
java
命令时显式添加环境变量;例如$ java $STD_OPTS my.app.Main args ...
你可以想象实现一个自定义启动器(在 C 中),并且可以做一些聪明的事情,比如模拟 Java 9 的 @file 机制。
1 - 根据症状,我认为您使用 @file
的尝试失败了,因为在适当的目录中找不到该文件,或者因为您正在使用 Java 8 或更早。