修改tomcat 使用的JVM的內存

一,前言html

  在文章讓tomcat使用指定JDK中,我讓tomcat成功使用了我指定的JDK1.8,而不是環境變量中配置的JDK10。本篇文章咱們就來探討一下怎麼設置tomcat使用的JVM的內存。java

  爲何要設置tomcat是用的JVM的內存呢?tomcat

  你們在平時的工做或者學習中,頗有可能會遇到內存溢出的異常例如:OutOfMemoryError,StackOverflowError,這個時候除去代碼編寫錯誤外,極可能是真的要增大JVM內存了。eclipse

  如何查看JVM內存使用狀況呢?這裏介紹一個JDK自帶的JVM內存監控工具:jvisualvm工具

二,jvisualvm簡單使用post

  jvisualvm.exe就在JDK的bin目錄中學習

  

  雙擊便可啓動。在啓動jvisualvm以前,我先啓動在文章讓tomcat使用指定JDK中配置了JDK1.8的tomcat。spa

  而後雙擊啓動jvisualvm,若是你是第一次啓動jvisualvm,須要作一些檢查,不用配置任何東西,按指導點擊便可。3d

  

  從上圖中能夠看到,本地中存在三個JVM進程,也就是說我如今的電腦中有三個JVM進程。server

  第1個是jvisualvm本身的JVM進程。

  第2個是我如今電腦上啓動的eclipse使用的JVM進程。

  第3個就是我在啓動jvisualvm以前啓動的tomcat使用的JVM進程了。

  雙擊第3個tomcat使用的JVM進程,就會進入JVM概述頁面

  

  在概述頁面中,我解釋一下上圖中標識的兩個區域

  第1個區域展現了java和JVM的一些信息,例如,JVM使用的是hotspot虛擬機(版本信息)而且是以server模式啓動的

  第2個區域是JVM參數區域,這裏是接下來的一個重點關注區域了,由於JVM內存的設置會在這裏直接顯示出來

  接下來觀察一下監視頁面

  

  在這個頁面中我也解釋兩個部分

  第1個部分是內存區域:這裏主要是展現了堆內存的使用狀況,從上圖中能夠看出在個人電腦上JVM默認的堆內存大小爲200M,固然當內存使用達到200M的時候,JVM會想系統再申請額外的內存。咱們一下子就會更改這個內存的大小。

  第2個部分是Mataspace(元數據)內存區域:mataspace內存是hotspot虛擬機對虛擬機規範中的方法區的實現,這裏主要存放的是類的元數據信息。在JDK1.8之前方法區的實現是永生代(permanent generation)

  爲了能讓咱們接下來的JVM內存設置看到直接的效果,jvisualvm工具的使用就先介紹到這裏,接下來就來修改JVM內存大小。

三,設置tomcat使用的JVM的內存

  其實也是超級簡單,只須要在tomcat的bin目錄下catalina.bat文件前面添加一行配置:set JAVA_OPTS=-Xms2048m -Xmx2048m -Xss1024K -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m

  以下圖

  

  上圖中也對Xms,Xmx等參數進行了解釋說明。

  這裏再多說一句,爲何要講-Xms和-Xmx設置爲同樣呢?由於虛擬機在向系統申請內存的時候是須要額外的消耗的,這裏爲了不這些額外的消耗,將-Xms和-Xmx設置爲同樣。

  -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=512m也是一樣的道理。

  接下來重啓tomcat,在jvisualvm中從新雙擊tomcat虛擬機進程,觀察概述JVM參數部分:

  

  能夠看到,咱們在catalina.bat中設置的參數都在這裏體現了。那麼到底有沒有效果呢?

  咱們來看一下監視頁面中的堆內存部分

  

  能夠看到-Xms和-Xmx設置的2048M的內存,確實是生效了。

  可是我發現mataspace的設置並無生效,但願看到的小夥伴中能有人給我解答,謝謝。

  到這裏,修改tomcat使用的JVM的內存,就結束了,但願對你有幫助。

 


 原創不易,轉載請聲明出處:http://www.javashuo.com/article/p-eeidprxr-hg.html 

相關文章
相關標籤/搜索