簡體   English   中英

如何通過環境變量設置 Java 的最小和最大堆大小?

[英]How do I set Java's min and max heap size through environment variables?

如何通過環境變量設置 Java 的最小和最大堆大小?

我知道在啟動 java 時可以設置堆大小,但我想通過我服務器上的環境變量來調整它。

你不能直接使用環境變量來做到這一點。 您需要使用傳遞給 java 命令的“非標准”選項集。 運行:java -X 了解詳情。 您正在尋找的選項是 -Xmx 和 -Xms (這是“初始”堆大小,所以可能是您正在尋找的。)

某些產品(如 Ant 或 Tomcat)可能帶有一個批處理腳本,用於查找 JAVA_OPTS 環境變量,但它不是 Java 運行時的一部分。 如果您正在使用其中一種產品,您可以將變量設置為:

set JAVA_OPTS="-Xms128m -Xmx256m"  

您也可以使用自己的命令行來采用這種方法,例如:

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass

如果您想要任何java進程(不僅僅是 ant 或 Tomcat)來選擇像-Xmx這樣的選項, -Xmx使用環境變量_JAVA_OPTIONS

在 bash 中: export _JAVA_OPTIONS="-Xmx1g"

實際上,有一種方法可以通過環境變量為 Sun 的 JVM 設置全局默認值。

請參閱如何設置 java 系統屬性,以便它在我啟動 JVM 時有效而不將其添加到命令行參數

您可以使用JAVA_TOOL_OPTIONS

例子:

export JAVA_TOOL_OPTIONS=-Xmx512m

在一些評論和另一個答案中已經提到了它。

OP的問題已經很老了,但由於它是該問題的第一個谷歌結果,我想為了清楚起見我會在這里添加答案。

你不能使用環境變量來做到這一點。 它是通過“非標准”選項完成的。 運行: java -X了解詳情。 您正在尋找的選項是-Xmx-Xms (這是“初始”堆大小,所以可能是您正在尋找的。)

我認為您唯一的選擇是將 java 包裝在一個腳本中,該腳本將環境變量替換為命令行

一些注意事項:

  1. Apache ant 對 JAVA_OPTS 一無所知,而 Tomcat 的啟動腳本卻知道。 對於 Apache ant,使用 ANT_OPTS 來影響運行 /ant/ 的 JVM 的環境,但不影響 ant 可能啟動的東西。

  2. 您可以設置的最大堆大小完全取決於環境:對於大多數 32 位系統,無論可用內存如何,您可以請求的最大堆空間量都在 2GiB 范圍內。 64 位系統上的最大堆“非常大”。 此外,您實際上也受到物理內存的限制,因為堆是由 JVM 管理的,您不希望對磁盤進行大量交換。

  3. 對於服務器環境,您通常希望將 -Xms 和 -Xmx 設置為相同的值:這會將堆的大小固定為特定大小,垃圾收集器可以做的工作更少,因為永遠不必重新堆大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM