2010-04-29 24 views

Trả lời

20

Phụ thuộc vào JVM, có lẽ là phiên bản ... có lẽ thậm chí có bao nhiêu clip giấy bạn có trên bàn làm việc của bạn vào thời điểm đó. Nó thậm chí có thể không hoạt động. Đừng làm thế.

Nếu nó nằm ngoài tầm kiểm soát của bạn vì một số lý do, hãy biên dịch và chạy theo cách tương tự như bạn đã chạy bình. Nhưng được cảnh báo, dựa vào thứ tự của các tùy chọn là một ý tưởng thực sự tồi tệ.

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 - tốt hơn đếm những kẹp giấy :-). Nghiêm túc, nó không phải là khoa học tên lửa để thay đổi bất cứ điều gì là đi qua những đối số mơ hồ. –

+2

đang thử với số lượng kẹp giấy khác nhau. không thể tìm thấy công tắc đầu tiên – OganM

9

Tôi đặt cược nó là thẻ thứ hai. Đối số thường được xử lý theo thứ tự:

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

Nhưng nếu tôi đang viết phân tích cú pháp đối số java, tôi sẽ phàn nàn về các đối số xung đột.

29

JVM của IBM xử lý trường hợp bên phải của đối số làm người chiến thắng. Tôi không thể nói chuyện với HotSpot, v.v.

Chúng tôi thực hiện điều này vì thường có các dòng lệnh lồng nhau từ tệp hàng loạt nơi mọi người chỉ có thể thêm vào cuối và muốn làm người chiến thắng.

+12

+1 để thực sự trả lời câu hỏi thay vì pontificating. – JimN

+0

Thực tế: 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 cũng dường như lấy giá trị ngoài cùng bên phải, ít nhất là cho -Xms.

+10

+1 để thực sự trả lời câu hỏi thay vì pontificating. – JimN

+0

giống như CSS, sau đó thắng – ryenus

33

Như mọi khi, hãy kiểm tra triển khai cụ thể của JVM địa phương của bạn nhưng đây là cách nhanh chóng để kiểm tra từ dòng lệnh mà không cần phải viết mã.

> 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} 

Vì vậy, bạn sẽ thấy trong trường hợp này, trường hợp thứ hai của đối số (2G) là những gì được ưu tiên (ít nhất là trong 1.8) và đã được kinh nghiệm của tôi với hầu hết các phiên bản hiện đại khác.

+7

'java -Xmx1G -XX: + PrintFlagsFinal -Xmx2G 2>/dev/null | grep MaxHeapSize', cách này dễ suy luận hơn. – ryenus

Các vấn đề liên quan