_JAVA_OPTIONS JAVA_TOOL_OPTIONS와 JAVA_OPTS의 차이점
나는 간의 비교 가지고 좋은 것 생각 _JAVA_OPTIONS
과 JAVA_TOOL_OPTIONS
. 하나를 조금 찾고 있지만 아무것도 찾을 수 없으므로 여기에서 Stackoverflow에 대한 지식을 찾을 수 있기를 바랍니다.
JAVA_OPTS
완전성을 위해 포함되어 있습니다. JVM의 일부는 아니지만 실제로는 많은 질문이 있습니다.
내가 아는데 것을:
지금까지 나는 그것을 발견했다.
JAVA_OPTS
JDK가 아니라 다른 많은 앱에서 사용됩니다 ( 이 게시물 참조 ).JAVA_TOOL_OPTIONS
그리고_JAVA_OPTIONS
대신에 명령 줄 매개 변수의 환경 변수로 JVM 인수를 지정하는 방법입니다.- 이 적어도에 의해 선택됩니다
java
및javac
- 그들은이 우선권을 가지고 있습니다 :
_JAVA_OPTIONS
(다른 것을 덮어 씁니다)- 명령 줄 매개 변수
JAVA_TOOL_OPTIONS
(다른 사람들이 덮어 썼음)
- 이 적어도에 의해 선택됩니다
내가 알고 싶은 것
- 공식 문서를 비교
JAVA_TOOL_OPTIONS
하고 있습니까?_JAVA_OPTIONS
JAVA_TOOL_OPTIONS
와_JAVA_OPTIONS
( 다른 우선권을 제외하고) 다른 차이점이 있습니까?- 실행 픽업 어떤
JAVA_TOOL_OPTIONS
과_JAVA_OPTIONS
(에 추가java
하고javac
) - 에 포함 할 수있는 일에 어떤 제한
JAVA_TOOL_OPTIONS
및_JAVA_OPTIONS
공식 문서
에 대한 문서를 찾을 수 없습니다 _JAVA_OPTIONS
. 에 대한 문서JAVA_TOOL_OPTIONS
는 차이점에 대해 많은 것을 밝히지 않았습니다.
예를 들어 내장 VM 또는 단순히 스크립트 내에서 시작된 VM과 같은 명령 줄에 항상 액세스하거나 수정할 수 없으므로 JAVA_TOOL_OPTIONS 변수가 제공되므로 이러한 경우 에이전트를 시작할 수 있습니다.
...
스크립트 예
이것이 내가 알아내는 데 사용한 코드입니다. 콘솔 출력은 주석으로 포함됩니다.
export JAVA_OPTS=foobar
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
java -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# java version "1.7.0_40"
OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
javac -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS="-Xmx512m -Xms64m"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS: -Xmx512m -Xms64m
# javac 1.7.0_40
export JAVA_TOOL_OPTIONS="-Xmx512m -Xms64m"
export _JAVA_OPTIONS="-Xmx1 -Xms1"
javac -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx512m -Xms64m
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
export JAVA_TOOL_OPTIONS="-Xmx1 -Xms1"
export _JAVA_OPTIONS=
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS: -Xmx1 -Xms1
# Picked up _JAVA_OPTIONS:
# java version "1.7.0_40"
# OpenJDK Runtime Environment (IcedTea 2.4.1) (suse-3.41.1-x86_64)
# OpenJDK 64-Bit Server VM (build 24.0-b50, mixed mode)
export JAVA_TOOL_OPTIONS=
export _JAVA_OPTIONS="-Xmx1 -Xms1"
java -Xmx512m -Xms64m -version
# Picked up JAVA_TOOL_OPTIONS:
# Picked up _JAVA_OPTIONS: -Xmx1 -Xms1
# Error occurred during initialization of VM
# Too small initial heap
라이브러리 호출을 통해 프로세스 내에서 JVM을 시작하더라도 이러한 옵션이 선택된다는 점을 제외하고는 거의 문제가되지 않았습니다.
_JAVA_OPTIONS
문서화되지 않은 사실 은이 변수를 사용하지 않는 것이 좋습니다. 실제로 사람들이 변수를로 설정하여 악용하는 것을 보았습니다 ~/.bashrc
. 그러나이 문제를 해결하려면 Oracle HotSpot VM의 소스를 확인할 수 있습니다 (예 : OpenJDK7 ).
또한 다른 VM이 문서화되지 않은 변수를 지원하거나 계속 지원한다는 보장은 없습니다.
2015-08-04 업데이트 : 검색 엔진에서 오는 사람들을 위해 5 분을 절약하기 위해 _JAVA_OPTIONS
명령 줄 인수보다 우선 JAVA_TOOL_OPTIONS
합니다.
There is one more difference: _JAVA_OPTIONS
is Oracle specific. IBM JVM is using IBM_JAVA_OPTIONS
instead. This was probably done to be able to define machine-specific options without collisions. JAVA_TOOL_OPTIONS
is recognized by all VMs.
JAVA_OPTS
have no special handling in JVM at all.
And according to https://bugs.openjdk.java.net/browse/JDK-4971166 the JAVA_TOOL_OPTIONS
is included in standard JVMTI specification, does better handling of quoted spaces and should be always preferred instead of undocumented Hotspot-specific _JAVA_OPTIONS
.
Also beware that using these prints additional message to stdout that can't be suppressed.
'Programing' 카테고리의 다른 글
-std = c ++ 11과 -std = gnu ++ 11의 차이점은 무엇입니까? (0) | 2020.07.20 |
---|---|
파이썬을위한“예쁜”지속적인 통합 (0) | 2020.07.20 |
명령 행에서 Eclipse Java 프로젝트 빌드 (0) | 2020.07.20 |
좋은 시각적 HTML5 편집기 또는 IDE? (0) | 2020.07.20 |
Elasticsearch와 표준 SQL 쿼리를 함께 사용하는 사례는 무엇입니까? (0) | 2020.07.20 |