一,前言

  在文章让tomcat使用指定JDK中,我让tomcat成功使用了我指定的JDK1.8,而不是环境变量中配置的JDK10。本篇文章我们就来探讨一下怎么设置tomcat使用的JVM的内存。

  为什么要设置tomcat是用的JVM的内存呢?

  大家在平时的工作或者学习中,很有可能会遇到内存溢出的异常例如:OutOfMemoryError,StackOverflowError,这个时候除去代码编写错误外,很可能是真的要增大JVM内存了。

  如何查看JVM内存使用情况呢?这里介绍一个JDK自带的JVM内存监控工具:jvisualvm

二,jvisualvm简单使用

  jvisualvm.exe就在JDK的bin目录中

  

  双击即可启动。在启动jvisualvm之前,我先启动在文章让tomcat使用指定JDK中配置了JDK1.8的tomcat。

  然后双击启动jvisualvm,如果你是第一次启动jvisualvm,需要做一些检查,不用配置任何东西,按指导点击即可。

  

  从上图中可以看到,本地中存在三个JVM进程,也就是说我现在的电脑中有三个JVM进程。

  第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的内存,就结束了,希望对你有帮助。


原创不易,转载请声明出处:https://www.cnblogs.com/zhangchengzi/p/9759890.html

修改tomcat 使用的JVM的内存的更多相关文章

  1. Linux 下修改Tomcat使用的JVM内存大小

    我的服务器的配置: # OS specific support.  $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...

  2. 修改Tomcat使用的JVM内存大小

    我的服务器的配置: # OS specific support.  $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...

  3. 如何修改Tomcat运行时jvm编码

    问题: 最近在部署项目的时候出现数据乱码的情况,经过一番查看项目都是用的UTF-8编码格式,数据也是,但是经过调用接口传给对方就乱码了. 由于是部署在Windows环境下,Windows默认编码GBK ...

  4. 如何加大jvm的内存和tomcat的内存

    如何扩大jvm的内存和tomcat的内存,如何让项目没有用的值得到及时的回收和清理,java项目 最佳答案   修改 tomcat 的内存方式:修改 catalina.bat在set JAVA_OPT ...

  5. tomcat优化和JVM修改内存

    Tomcat中的线程池(APR和ThreadPool) 2. 在Connector中指定使用共享线程池: <Connector executor="tomcatThreadPool&q ...

  6. 修改tomcat JVM 大小

    参考:https://blog.csdn.net/mynamepg/article/details/80591348 1.Xms表示初始分配给jvm的内存大小,-Xmx表示最大可分配给jvm的内存大小 ...

  7. Linux下修改tomcat内存

    由于服务器上放的tomcat太多,造成内存溢出. 常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemo ...

  8. 基于JVM(内存)和Tomcat性能调优

    一.总结前一天的学习 从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü   吞吐量 ü   Responsetime ü   Cpuload ü   MemoryUsa ...

  9. Tomcat中查看JVM内存使用情况

    TOMCAT运行时,实时监控当前应用JVM的使用情况:可以利用Tomcat自带的应用manager查看详情. 首先,确认服务目录webapps下有manager应用 其次,需要创建角色manager和 ...

随机推荐

  1. 2019Hexo博客Next主题深度美化 打造一个炫酷博客(2)-奥怪的小栈

    219/8/1 更新 本文转载于:奥怪的小栈 这篇文章告诉你在搭建好博客后,面对网上千篇一律的美化教程怎么才能添加自己独特点,使人眼前一亮. 本站基于HEXO+Github搭建. 所以你需要准备好HE ...

  2. 纯 CSS 实现绘制各种三角形(各种角度)

    一.前言 三角形实现原理:宽度width为0:height为0:(1)有一条横竖边(上下左右)的设置为border-方向:长度 solid red,这个画的就是底部的直线.其他边使用border-方向 ...

  3. sql server 怎么查看blocked的线程

    select spid ,blocked from master..sysprocesses

  4. ajax中的后台返回数据data的意义

  5. PrintWriter out = response.getWriter();乱码解决

     resopnse  request的乱码问题 今天在改项目时,发现这个简单又容易忽视在问题.说起这个问题,比较简单,但也比较容易忽视.下面就具体讲讲这个问什么会出现乱码问题. request乱码指的 ...

  6. three.js基础前置知识

    这一节是纯理论知识,用于介绍three.js的入门概念,也就是开发前需要准备的理论基础. 一,三剑客 当然就是scene,camera,renderer这三个基本要素. scene是一个用于容纳三维空 ...

  7. JQuery $.ajax(); 异步访问完整参数

    $.ajax 完整参数   jquery中的ajax方法参数 url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post ...

  8. 关于ionic 打包后 background-image 无法显示 的问题

    这几天费劲心思,终于把ionic 项目打包生成 本地app,但是安卓手机安装以后,我所有的雪碧图的 icon ,竟然无法显示:到处搜索答案,都没有什么可行的,都是说什么ionic版本不对,androi ...

  9. Nginx反向服务器搭建

    Nginx环境搭建 下载解压Nginx源码包 可以通过已有的压缩包 这里也可以通过yum的在线下载 wget http://nginx.org/download/nginx-1.13.7.tar.gz ...

  10. switch语句(上)(转载)

    switch语句是C#中常用的跳转语句,可以根据一个参数的不同取值执行不同的代码.switch语句可以具备多个分支,也就是说,根据参数的N种取值,可以跳转到N个代码段去运行.这不同于if语句,一条单独 ...