2010-04-29 10 views

답변

20

아마도 JVM에 따라 다르 겠지만 아마도 버전에 따라 달라질 수 있습니다. 그것은 효과가 없을 수도 있습니다. 그러지 마.

어떤 이유로 컨트롤에서 벗어난 경우 병을 실행하는 것과 같은 방법으로 컴파일하고 실행하십시오. 그러나 옵션의 순서에 의존하는 것은 정말 나쁜 생각입니다.

public class TotalMemory 
{ 
    public static void main(String[] args) 
    { 
     System.out.println("Total Memory: "+Runtime.getRuntime().totalMemory()); 
     System.out.println("Free Memory: "+Runtime.getRuntime().freeMemory()); 
    } 
} 
+2

+1의 실체입니다. 그 클립 클립을 더 잘 계산하십시오 :-). 진지하게, 그 모호한 주장을 전달하는 것은 무엇이든 바꾸는 것은 로켓 과학이 아닙니다. –

+2

다른 수의 종이 클립으로 시도했습니다. 실제로 질문에 답하는 대신 첫 번째 질문으로 – OganM

9

두 번째 것 같습니다.

for(int i=0; i<argc; i++) { 
    process_argument(argv[i]); 
} 

을하지만 자바 인수 파서를 작성한다면, 나는 충돌하는 인수에 불평 것 : 인수는 일반적으로 순서대로 처리됩니다.

29

IBM JVM은 인수의 가장 오른쪽 인스턴스를 승자로 취급합니다. 나는 HotSpot 등등에 대해서 말할 수 없다.

우리는 사람들이 끝까지 추가 할 수있는 배치 파일로부터 깊이 중첩 된 명령 줄을 종종 사용하기 때문에이를 수행한다.

+12

+1로 전환 할 수 없습니다. – JimN

+0

실제로 : https://www.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.zos.70.doc/diag/appendixes/cmdline/cmdline_specifying.html –

25

FTR에서 OpenJDK 1.7은 적어도 -Xms의 경우 가장 오른쪽 값을 차지하는 것처럼 보입니다.

+10

+1 실제로 대답하는 데 +1 대신 pontificating. – JimN

+0

CSS와 마찬가지로 나중에는 – ryenus

33

항상 그렇듯이 로컬 JVM의 특정 구현을 확인하십시오. 코드 작성하지 않고도 명령 행에서 신속하게 확인할 수 있습니다.

> java -version; java -Xmx1G -XX:+PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize 

java version "1.8.0_25" 
Java(TM) SE Runtime Environment (build 1.8.0_25-b17) 
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 
uintx MaxHeapSize   := 2147483648  {product} 

그래서 당신은이 경우에 볼 수, 인수의 두 번째 인스턴스 (2G)는 (적어도 1.8) 우선합니다 그뿐만 아니라 다른 대부분의 현대 버전과 내 경험이었습니다 것입니다.

+7

'java -Xmx1G -XX : + PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize', 이렇게 쉽게 추론 할 수 있습니다. – ryenus

관련 문제