1. 程式人生 > >java設定jvm引數,我趟過的那些坑

java設定jvm引數,我趟過的那些坑

最近 讀到一篇文章,介紹 後端服務壓測的  https://mp.weixin.qq.com/s/XW9geHZ9odHdI7srDiKBIg

裡面提到 gclog,剛好前端時間公司的app 總是出現out of memory 的錯誤,就想看看 gc日誌,自己列印個瞭解下。這是前提。

目標:列印gc 日誌(網上的都不靠譜··還有誰說google靠譜的··我昨晚整了三個小時)

好了··首先,平臺有windows 和 linux,配置方式也有很多種

1、windows 下 平時開發 用 的是eclipse,在eclipse 中,可以配置tomcat,也可以直接配置jdk

配置jdk:


配置tomcat:


配置後,啟動tomcat ,日誌裡能看到載入了配置


在日誌中能看到,其實 在jdk中與 tomcat 中 配置是一樣的,如果兩個都配置了,就先載入 jdk的,然後是tomcat的配置。例如:jdk 裡面日誌是gc.log,tomcat 是gc1.log,那麼

先載入jdk,Command line argument: -Xloggc:C:\11\gclog\gc.log,然後載入tomcat Command line argument: -Xloggc:C:\11\gclog\gc1.log,那麼很明顯,同樣的引數被覆蓋了,最後輸出gc日誌就是gc1.log

區別是 配置jdk針對所有 tomcat,配置tomcat 呢 就只針對這一個tomcat。

2、如果不在eclipse配置,就想在tomcat 裡配置,用 start.bat 啟動專案,那麼就像網上說的,在catalina.bat 裡面配置,坑來了!

配置方法網上說法不一,有的帶引號,有的不帶,也沒說明tomcat版本等資訊··總之是模模糊糊。配置了也不管用,浪費了我四個小時啊!!

經過我最後實踐總結:

確實是配置 catalina.bat,但配置方法要參照 人家裡面的寫法,例如:

tomcat 7:

開啟 catalina.bat,搜尋 JAVA_OPTS,找到


196 行 是人家的本來的配置,那當然,照著 它幹就行了唄··

tomcat 8:


tomcat 8 也一樣

重要說明:有時候你發現 啟動後 引數在啟動日誌裡有,但是就是不生成gc.log ,那麼··先檢查配置的log 輸出 路徑,至少要有這個資料夾才行,比如

Command line argument: -Xloggc:C:\11\gclog\gc1.log  ,就先把 C:\11\gclog  這個資料夾建好,檔案會自動建立,但資料夾不會·······,還沒有的話 可能還沒有gc過··訪問下tomcat頁面試試。

3、linux 裡面

linux 裡面 也是照著人家原來的配置就行了,但我最開始也是怎麼弄都不行,最後重啟下··解決了。



tomcat 啟動關閉時 會 清空重寫log檔案,那麼 linux 裡可以加上

$$ 
來分開,它代表 當前Shell程序ID。對於 Shell 指令碼,就是這些指令碼所在的程序ID。windwos 上不曉得怎麼搞··

其他就··沒啥了

還有·· 也可以設定全域性變數,類似eclipse下 設定jdk,windwos下可以 增加 環境變數,linux 下 修改  /etc/profile 。(沒試過)