jvm腳本
① 如何在maven環境中設置JVM參數
有時候我們需要設定maven環境下的JVM參數,以便通過maven執行的命令或啟動的系統能得到它們需要的參數設定。比如:當我們使用jetty:run啟動jetty伺服器時,在進行熱部署時會經常發生:java.lang.OutOfMemoryError: PermGen space問題,這時我們需要增大JVM參數MaxPermSize的值。再者,當我們需要進行遠程調試時,也需要設置監聽埠。maven配置jvm參數的地方是%M2_HOME%/bin/mvn.bat文件,這是啟動Maven的腳本文件,在該文件中你能看到有一行注釋為:
@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
.通過添加set MAVEN_OPTS可以為maven設定jvm參數了。比如:
1.建立遠程調試,埠為:4000的設定為:
set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4000
注意:suspend最好設定為n.設定上述參數後,在eclipse中新建遠程調試,設置埠為4000,這樣通過jetty:run啟動系統時就可以進行遠程調試了。
2.解決自動熱部署時java.lang.OutOfMemoryError: PermGen space問題解決這一問題只需要增大PermGen區,默認為 64m,設置方法為:set MAVEN_OPTS=-XX:MaxPermSize=128M
② 如何通過JVM的命令行選項
堆棧是JVM分配的,一般涉及的時候都是啟動JVM時。
eclipse可以在eclipse.ini 配置文件中設置,也可以在eclipse執行一個java類時,通過右鍵的參數添加部分去設置。
一般的像tomcat,weblogic這些web容器,都是應用jvm啟動的,所以在他們的啟動腳本中都會去調用JVM,就可以在他們的啟動腳本中設置堆棧的大小。
再就是直接通過java 命令去執行class文件的時候,應該也可以設置JVM參數,eg : java -Xms512m -Xmx1024m HelloWorld
在cmd中設置,也必須是執行java命令時,否則我覺得沒有意義。