Programing

_JAVA_OPTIONS, JAVA_의 차이점TOOL_OPTS 및 JAVA_OPTS

c10106 2022. 4. 20. 20:35
반응형

_JAVA_OPTIONS, JAVA_의 차이점TOOL_OPTS 및 JAVA_OPTS

서로 비교를 해 보면 좋을 것 같았다._JAVA_OPTIONS그리고JAVA_TOOL_OPTIONS나는 하나를 찾아 헤맸지만, 아무것도 찾을 수 없으니, Stackoverflow에 관한 지식을 여기서 찾을 수 있기를 바란다.

JAVA_OPTS완전성을 위해 포함되어 있다.그것은 JVM에 속하지 않지만, 야생에서 그것에 대해 많은 의문점이 있다.

내가 아는 건:

지금까지 나는 다음과 같은 사실을 알아냈다.

  • JAVA_OPTS JDK에서 사용하는 것이 아니라 여러 다른 앱에서 사용하는 것이다(이 게시물 참조).
  • JAVA_TOOL_OPTIONS 그리고 명령줄 매개 변수 대신 환경 변수로 JVM 인수를 지정하는 방법이다.
    • 적어도 에 의해 픽업된다.java그리고javac
    • 이러한 우선 순위는 다음과 같다.
      1. _JAVA_OPTIONS(다른 항목 덮어쓰기)
      2. 명령줄 매개 변수
      3. 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의 문서에는 차이점이 별로 드러나지 않는다.

예를 들어 내장형 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이 문서화되지 않은 변수를 계속 지원하거나 지원할 것이라는 보장은 없다는 점도 기억하십시오.

UPDATE 2015-08-04: 검색 엔진에서 오는 사람들을 위해 5분을 절약하기 위해,_JAVA_OPTIONS트럼프의 명령줄 주장, 이것이 결국 트럼프를 능가한다.JAVA_TOOL_OPTIONS.

한 가지 다른 점이 더 있다._JAVA_OPTIONS오라클 전용.IBM JVM이 사용 중IBM_JAVA_OPTIONS에 따라서 충돌 기계 할 수 이는 충돌 없이 기계별 옵션을 정의할 수 있도록 수행되었을 것이다. JAVA_TOOL_OPTIONSvmx에서 에 대해 인식됨.

JAVA_OPTSJVM에서 특별한 취급이 전혀 없다.

그리고 https://bugs.openjdk.java.net/browse/JDK-4971166에 따르면JAVA_TOOL_OPTIONS표준 JVMTI 사양에 포함되며, 인용된 공간을 더 잘 처리하며, 문서화되지 않은 Hotspot 전용 대신 항상 선호되어야 한다._JAVA_OPTIONS.

또한 이러한 메시지를 사용하면 억제할 없는 추가 메시지가 인쇄될 수 있으므로 주의하십시오.


@ryenus가 지적했듯이, JDK 9+ 이후로 JDK_J가 있다.AVA_OPTIONS를 선호하는 대체 항목: JDK_J의 차이점AVA_Options 및 JAVA_Java 11 사용 시 TOOL_OPTIONS?

참조URL: https://stackoverflow.com/questions/28327620/difference-between-java-options-java-tool-options-and-java-opts

반응형