修改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 

相关文章
相关标签/搜索