一,前言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