Grails1.1和Groovy1.6的Java虛擬機器的記憶體設定和調整
Grails1.1和Groovy1.6的Java虛擬機器的記憶體設定和調整
作者:Frerk Meyer
2009.3.21
在這篇文章中,我希望回答下列問題:
.Grails1.1和Groovy1.6的Java虛擬機器的記憶體設定和調整隱藏在哪裡,以及我們如何來改變它們?
.最新的版本和舊的版本之間有什麼不同?
.以上這些設定和調整在windows和linux之間的不同需要我們掌握嗎?
Grails1.1和Grails1.0.2的Java虛擬機器的記憶體設定
如果你執行grails命令,在linux/unix平臺,它是執行"$GRAILS_HOME/bin/startGrails"命令;而在windows平臺,是執行"$GRAILS_HOME/bin/startGrails.bat"的批處理。這些指令碼在linux和windows之間有不同的行為,並且在windows平臺上,不同版本之間的設定也不同。
.linux平臺的Grails 1.1:即使你設定"$JAVA_OPTS"為不同的數值,但是"server" JVM只有最大為"512 Mb"的堆空間。
. linux平臺的Grails 1.02:和上面的情況相同。
.windows平臺的Grails 1.1:如果沒有設定"$JAVA_OPTS"引數,那麼使用最大為"512 Mb"的堆空間,並且自動選擇Java虛擬機器引擎。
. windows平臺的Grails 1.02:如果沒有設定"$JAVA_OPTS"引數,那麼使用最大為"128 Mb"的堆空間,並且自動選擇Java虛擬機器引擎。
從我的觀點來看,windows平臺的Grails 1.1有著最好的體驗,應該被Linux/Unix平臺採納。如果我有很好的理由來設定"$JAVA_OPTS"引數,那麼我不希望它不能被修改。我不知道如果設定"-Xmx512m"和"-Xmx256m"引數,JVM到底會額外做些什麼。但是如果能夠使用前面的引數,那麼使用後面的引數會導致一個錯誤?
所以我在我的Linux系統裡改變了"startGrails"命令,如下:
# comment the old setting
# JAVA_OPTS="-server -Xmx512M $JAVA_OPTS"
# check for $JAVA_OPTS instead:
if [ "$JAVA_OPTS" == "" ]; then
JAVA_OPTS="-server -Xmx512m"
fi
但是必須注意:如果你使用war包釋出你的Grails應用到一個應用伺服器上,那麼這些記憶體設定不再有效;取而代之的是,你必須為你的應用設定應用伺服器的記憶體設定。
Groovy1.6 Java虛擬機器的記憶體設定
如果你執行groovy命令,在Linux/Unix平臺會執行"$GROOVY_HOME/bin/startGroovy",在Windows平臺會執行"$GROOVY_HOME/bin/startGroovy.bat"。這些指令碼在Linux和Windows分別不同,但是在各自的平臺上,Groovy版本1.6和版本1.5.7卻是相同的。下面是這些不同:
.Linux平臺的Groovy1.6:如果設定了"$JAVA_OPTS"的話,就會起作用,JVM的預設設定只有在"$JAVA_OPTS"為空或者沒有設定的情況下起作用。
.Windows平臺的Groovy1.6:"$JAVA_OPTS"肯定起作用,如果"$JAVA_OPTS"為空或者沒有設定,那麼最大堆空間為128Mb。
你可以通過設定在"$HOME/.groovy/startup"檔案裡的"$JAVA_OPTS"更改所有的Groovy應用的記憶體設定,不受其他Java應用的影響,這個檔案會被startGroovy指令碼讀取,如果它存在的話,會被當做一個shell指令碼來執行。
在開源的Java應用伺服器裡設定JVM記憶體
Paul Gu在他的blog"6 Common Errors in Setting Java Heap Size"裡,不僅列出了在設定堆大小的時候的大量陷阱和錯誤,而且給出了很多關於怎麼找出堆大小和不同的Java應用包括很多開源的Java應用伺服器的"$JAVA_OPTS"設定的提示。很多提示都能幫助你在不同的系統釋出你的Grails應用,並且能夠調整你的JVM記憶體設定。
原文網址:http://www.groovygrails.de/blog/groovygrails/entry/grails_1_1_and_groovy
相關文章
- 關於虛擬機器記憶體和JVM記憶體設定的思考虛擬機記憶體JVM
- eclipse 設定java虛擬機器記憶體EclipseJava虛擬機記憶體
- Java虛擬機器(JVM)中的記憶體設定詳解Java虛擬機JVM記憶體
- Java 虛擬機器之三:Java虛擬機器的記憶體結構Java虛擬機記憶體
- JAVA 虛擬機器可用記憶體Java虛擬機記憶體
- eclipse 設定java虛擬機器記憶體大小EclipseJava虛擬機記憶體
- Java虛擬機器12:Java記憶體模型Java虛擬機記憶體模型
- 急!tomcat5中如何設定Java虛擬機器的使用的記憶體?TomcatJava虛擬機記憶體
- Java虛擬機器01——Java記憶體資料區域和記憶體溢位異常Java虛擬機記憶體溢位
- win10怎麼調整虛擬記憶體_win10怎麼調虛擬記憶體Win10記憶體
- JDK1.8-Java虛擬機器執行時資料區域和HotSpot虛擬機器的記憶體模型JDKJava虛擬機HotSpot記憶體模型
- Java虛擬機器學習 - 記憶體調優Java虛擬機機器學習記憶體
- java虛擬機器記憶體的各個區域Java虛擬機記憶體
- Java虛擬機器的記憶體是如何分佈的Java虛擬機記憶體
- 【伺服器】Ubuntu虛擬記憶體設定伺服器Ubuntu記憶體
- 實體記憶體和虛擬記憶體記憶體
- Java虛擬機器之記憶體區域Java虛擬機記憶體
- Java虛擬機器4:記憶體溢位Java虛擬機記憶體溢位
- Linux設定虛擬記憶體教學和實戰Linux記憶體
- Java虛擬機器的記憶體空間有幾種Java虛擬機記憶體
- Java虛擬機器的記憶體空間有幾種!Java虛擬機記憶體
- 小試Java虛擬機器記憶體管理(Java 8)Java虛擬機記憶體
- Java虛擬機器記憶體模型學習筆記Java虛擬機記憶體模型筆記
- 《深入理解Java虛擬機器》個人讀書總結——JAVA虛擬機器記憶體Java虛擬機記憶體
- java虛擬機器和Dalvik虛擬機器Java虛擬機
- Java虛擬機器記憶體分配與回收策略Java虛擬機記憶體
- Java虛擬機器記憶體區域詳解Java虛擬機記憶體
- Java虛擬機器記憶體區域劃分Java虛擬機記憶體
- Java虛擬機器:JVM記憶體分代策略Java虛擬機JVM記憶體
- Java虛擬機器7:記憶體分配原則Java虛擬機記憶體
- Java虛擬機器記憶體優化實踐Java虛擬機記憶體優化
- win10電腦虛擬記憶體怎麼設定 win10虛擬記憶體設定的方法Win10記憶體
- JVM虛擬機器和Oracle資料庫記憶體管理的學習JVM虛擬機Oracle資料庫記憶體
- win10虛擬記憶體怎麼設定 win10虛擬記憶體設定方法Win10記憶體
- 怎麼設定虛擬記憶體win10 win10虛擬記憶體如何設定記憶體Win10
- Win10設定虛擬記憶體方法 Win10怎麼設定虛擬記憶體Win10記憶體
- Java虛擬機器2:Java記憶體區域及物件Java虛擬機記憶體物件
- [Java虛擬機器]Java記憶體模型與執行緒Java虛擬機記憶體模型執行緒