Làm cách nào để đặt kích thước heap tối thiểu và tối đa của Java thông qua các biến môi trường?
Tôi biết rằng kích thước heap có thể được đặt khi khởi chạy java, nhưng tôi muốn điều chỉnh điều này thông qua các biến môi trường trên máy chủ của mình.
Làm cách nào để đặt kích thước heap tối thiểu và tối đa của Java thông qua các biến môi trường?
Tôi biết rằng kích thước heap có thể được đặt khi khởi chạy java, nhưng tôi muốn điều chỉnh điều này thông qua các biến môi trường trên máy chủ của mình.
Câu trả lời:
Bạn không thể làm điều đó bằng cách sử dụng trực tiếp các biến môi trường. Bạn cần sử dụng tập hợp các tùy chọn "không chuẩn" được chuyển cho lệnh java. Chạy: java -X để biết chi tiết. Các tùy chọn bạn đang tìm là -Xmx và -Xms (đây là kích thước heap "ban đầu", vì vậy có thể là thứ bạn đang tìm kiếm.)
Một số sản phẩm như Ant hoặc Tomcat có thể đi kèm với tập lệnh lô tìm kiếm biến môi trường JAVA_OPTS, nhưng nó không phải là một phần của thời gian chạy Java. Nếu bạn đang sử dụng một trong những sản phẩm đó, bạn có thể đặt biến như:
set JAVA_OPTS="-Xms128m -Xmx256m"
Bạn cũng có thể thực hiện phương pháp này với dòng lệnh của riêng mình như:
set JAVA_OPTS="-Xms128m -Xmx256m"
java ${JAVA_OPTS} MyClass
JAVA_OPTSkỹ thuật cũng được sử dụng bởi các kịch bản được tạo ra bởi các plugin appassemble maven.
Nếu bạn muốn bất kỳ javaquy trình nào , không chỉ ant hay Tomcat, chọn các tùy chọn như -Xmxsử dụng biến môi trường _JAVA_OPTIONS.
Trong bash: export _JAVA_OPTIONS="-Xmx1g"
set _JAVA_OPTIONS=-Xmx1g Để làm cho nó vĩnh viễn, làm cho một biến môi trường mới _JAVA_OPTIONS và đặt nó vào-Xmx1g
Trên thực tế, có một cách để đặt mặc định chung cho JVM của Sun thông qua các biến môi trường.
Bạn không thể làm điều đó bằng cách sử dụng các biến môi trường. Nó được thực hiện thông qua các tùy chọn "không chuẩn". Chạy: java -Xđể biết chi tiết. Các tùy chọn bạn đang tìm là -Xmxvà -Xms(đây là kích thước heap "ban đầu", vì vậy có thể là những gì bạn đang tìm kiếm.)
Bạn có thể sử dụng JAVA_TOOL_OPTIONS.
Thí dụ:
export JAVA_TOOL_OPTIONS=-Xmx512m
Nó đã được đề cập trong một số bình luận, và trong một câu trả lời khác .
Câu hỏi của OP khá cũ, nhưng vì nó là kết quả google đầu tiên cho câu hỏi, tôi nghĩ tôi sẽ thêm câu trả lời ở đây để rõ ràng hơn.
Tôi nghĩ lựa chọn duy nhất của bạn là bọc java trong một tập lệnh thay thế các biến môi trường vào dòng lệnh
Một số lưu ý:
Kiến Apache không biết gì về JAVA_OPTS, trong khi các script khởi động của Tomcat thì có. Đối với kiến Apache, sử dụng ANT_OPTS để ảnh hưởng đến môi trường cho JVM chạy / ant /, nhưng không ảnh hưởng đến những thứ mà kiến có thể khởi chạy.
Kích thước heap tối đa mà bạn có thể đặt hoàn toàn phụ thuộc vào môi trường: đối với hầu hết các hệ thống 32 bit, dung lượng heap tối đa mà bạn có thể yêu cầu, bất kể bộ nhớ khả dụng, nằm trong phạm vi 2GiB. Heap lớn nhất trên hệ thống 64 bit là "thực sự lớn". Ngoài ra, trên thực tế bạn cũng bị giới hạn bởi bộ nhớ vật lý, vì heap được quản lý bởi JVM và bạn không muốn có nhiều hoán đổi diễn ra trên đĩa.
Đối với môi trường máy chủ, bạn thường muốn đặt -Xms và -Xmx thành cùng một giá trị: điều này sẽ cố định kích thước của heap ở một kích thước nhất định và trình thu gom rác có ít công việc phải làm hơn vì heap sẽ không bao giờ phải re- có kích thước.