gpt4 book ai didi

JAVA_TOOL_OPTIONS 最大长度

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:52 26 4
gpt4 key购买 nike

我有一个带有 Hello.java 的简单 jar:

class Hello {
public static void main(String[] a) {
System.out.println("Hello world!");
}
}

我想通过 JAVA_TOOL_OPTIONS 向它传递一些选项。如果 $JAVA_TOOL_OPTIONS 长度的值小于或等于 1024,则将其拾取:

$export JAVA_TOOL_OPTIONS=$(for i in {1..43}; do echo -n "-Dmyapp.opt${i}="123456789" "; done)
$ echo $JAVA_TOOL_OPTIONS | wc -c
1023

java -jar hello.jar
Picked up JAVA_TOOL_OPTIONS: -Dmyapp.opt1=123456789 -Dmyapp.opt2=123456789 -Dmyapp.opt3=123456789 -Dmyapp.opt4=123456789 -Dmyapp.opt5=123456789 -Dmyapp.opt6=123456789 -Dmyapp.opt7=123456789 -Dmyapp.opt8=123456789 -Dmyapp.opt9=123456789 -Dmyapp.opt10=123456789 -Dmyapp.opt11=123456789 -Dmyapp.opt12=123456789 -Dmyapp.opt13=123456789 -Dmyapp.opt14=123456789 -Dmyapp.opt15=123456789 -Dmyapp.opt16=123456789 -Dmyapp.opt17=123456789 -Dmyapp.opt18=123456789 -Dmyapp.opt19=123456789 -Dmyapp.opt20=123456789 -Dmyapp.opt21=123456789 -Dmyapp.opt22=123456789 -Dmyapp.opt23=123456789 -Dmyapp.opt24=123456789 -Dmyapp.opt25=123456789 -Dmyapp.opt26=123456789 -Dmyapp.opt27=123456789 -Dmyapp.opt28=123456789 -Dmyapp.opt29=123456789 -Dmyapp.opt30=123456789 -Dmyapp.opt31=123456789 -Dmyapp.opt32=123456789 -Dmyapp.opt33=123456789 -Dmyapp.opt34=123456789 -Dmyapp.opt35=123456789 -Dmyapp.opt36=123456789 -Dmyapp.opt37=123456789 -Dmyapp.opt38=123456789 -Dmyapp.opt39=123456789 -Dmyapp.opt40=123456789 -Dmyapp.opt41=123456789 -Dmyapp.opt42=123456789 -Dmyapp.opt43=123456789
Hello world!

如果 $JAVA_TOOL_OPTIONS 长度的值大于 1024,则忽略:

$export JAVA_TOOL_OPTIONS+="$JAVA_TOOL_OPTIONS -Dmyapp.opt44=123456789"
$ echo $JAVA_TOOL_OPTIONS | wc -c
2070

$ java -jar hello.jar
Hello world!

JAVA_TOOL_OPTIONS 字符长度限制从何而来?是否可以超过 1024 个字符的限制?

最佳答案

这是个有趣的问题!如果您检查 OpenJDK v7 的源代码,特别是 command line argument parser ,你会看到:

jint Arguments::parse_options_environment_variable(const char* name, SysClassPath* scp_p, bool* scp_assembly_required_p) {
const int N_MAX_OPTIONS = 64;
const int OPTION_BUFFER_SIZE = 1024;
char buffer[OPTION_BUFFER_SIZE];

因此缓冲区大小限制为 1024,这与您的实验所证实的完全匹配:-)

但是,我不知道也没有找到任何关于为什么存在此限制的官方文档。

关于JAVA_TOOL_OPTIONS 最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41792132/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com