set DJC_JVM_MAXHEAP=512M
set DJC_JVM_MINHEAP=256M
在easerver上碰到了OutOfMemory的問題,參考上面的解決辦法:
set DJC_JVM_MAXHEAP=512M
set DJC_JVM_MINHEAP=512M
啟動(dòng)easerver6.0之后會(huì)發(fā)現(xiàn)進(jìn)程之中有兩個(gè)java.exe和一個(gè)javaw.exe,如下圖所示:
則發(fā)現(xiàn)兩個(gè)java.exe進(jìn)程分配內(nèi)存都是512M左右,顯然有一些問題,這里怎么會(huì)有兩個(gè)相同的進(jìn)程,并且兩個(gè)內(nèi)存分配都是根據(jù)上面的配置來的,哪個(gè)是我們用的
從easerver文檔中發(fā)現(xiàn),有另外一個(gè)地方可以配置jvm的啟動(dòng)參數(shù),即web控制臺(tái)如下圖所示的java Startup Options:
設(shè)置成如下圖所示的啟動(dòng)參數(shù):
然后重啟easerver,發(fā)現(xiàn)內(nèi)存分配的變化如下:
顯然,兩個(gè)java進(jìn)程,有一個(gè)的內(nèi)存是根據(jù)開始的set配置確定的,另外一個(gè)是根據(jù)我們?cè)诳刂婆_(tái)配置。
我個(gè)人理解是:這兩個(gè)java進(jìn)程,一個(gè)是easerver自己使用的,一個(gè)是我們發(fā)布程序使用的。
如果我們沒有在控制臺(tái)設(shè)置具體的jvm參數(shù),則發(fā)布程序使用的jvm參數(shù)默認(rèn)會(huì)和easerver自己使用的相同(即通過set設(shè)置的)
如果在easerver發(fā)布過程中碰到OutOfMemory,即發(fā)布本身需要很大的內(nèi)存,比如包很大等等,修改set的那個(gè)jvm參數(shù)即可。
如果是我們的應(yīng)用程序使用過程中OutOfMemory,則需要在控制臺(tái)直接設(shè)置jvm參數(shù),控制比較精確(例如-server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m)
另外根據(jù)easerver的文檔,好像set DJC_JVM_OPTIONS="-server -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=128m"
應(yīng)該也可以的,但是我試了幾次(包括把引號(hào)去掉)都沒有成功……
總結(jié)一下:就是一般來說不用修改set的這個(gè)jvm啟動(dòng)參數(shù),使用默認(rèn)配置即可,只需要根據(jù)實(shí)際情況到控制臺(tái)精確修改一下我們的應(yīng)用程序使用的jvm參數(shù)。