修改tomcat 使用的JVM的内存
一,前言
在文章让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的内存的更多相关文章
- Linux 下修改Tomcat使用的JVM内存大小
我的服务器的配置: # OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...
- 修改Tomcat使用的JVM内存大小
我的服务器的配置: # OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...
- 如何修改Tomcat运行时jvm编码
问题: 最近在部署项目的时候出现数据乱码的情况,经过一番查看项目都是用的UTF-8编码格式,数据也是,但是经过调用接口传给对方就乱码了. 由于是部署在Windows环境下,Windows默认编码GBK ...
- 如何加大jvm的内存和tomcat的内存
如何扩大jvm的内存和tomcat的内存,如何让项目没有用的值得到及时的回收和清理,java项目 最佳答案 修改 tomcat 的内存方式:修改 catalina.bat在set JAVA_OPT ...
- tomcat优化和JVM修改内存
Tomcat中的线程池(APR和ThreadPool) 2. 在Connector中指定使用共享线程池: <Connector executor="tomcatThreadPool&q ...
- 修改tomcat JVM 大小
参考:https://blog.csdn.net/mynamepg/article/details/80591348 1.Xms表示初始分配给jvm的内存大小,-Xmx表示最大可分配给jvm的内存大小 ...
- Linux下修改tomcat内存
由于服务器上放的tomcat太多,造成内存溢出. 常见的内存溢出有以下两种: java.lang.OutOfMemoryError: PermGen space java.lang.OutOfMemo ...
- 基于JVM(内存)和Tomcat性能调优
一.总结前一天的学习 从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü 吞吐量 ü Responsetime ü Cpuload ü MemoryUsa ...
- Tomcat中查看JVM内存使用情况
TOMCAT运行时,实时监控当前应用JVM的使用情况:可以利用Tomcat自带的应用manager查看详情. 首先,确认服务目录webapps下有manager应用 其次,需要创建角色manager和 ...
随机推荐
- Ajax前台返回JSON数据后再Controller中直接转换成类型使用,后台接收json转成实体的方法
之前写过一篇记录文章,写的是将一个比较复杂的数据结构在前台组合起来后传递到后台. 当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法 所有都是自己写的, ...
- Docker安装Skywalking APM分布式追踪系统
环境介绍 本文使用虚拟机unbutu18+docker.本unbutu18系统IP地址为:192.168.150.134 大家在使用时记得将此地址换成自己的实际地址. docker的安装可参考:htt ...
- JSON格式提取相同属性的某个值
[ {UID:"222",value:"111"}, {UID:"222",value:"103"}, {UID:&qu ...
- 红黑树以及与AVL树的区别
http://blog.csdn.net/zwan0518/article/details/12219055 http://blog.csdn.net/v_july_v/article/details ...
- mysql where、group by、having
今天重新温习一遍mysql的知识 先来讲讲where.group by.having group by :是将记录中的数据,按照条件进行分组: having:是将分组后的数据加上条件筛选,区别于whe ...
- leetcode8 String to Integer
题目描述 Implement atoi which converts a string to an integer. The function first discards as many white ...
- vue 自动化路由实现
1.需求描述 在写vue的项目中,一般情况下我们每添加一个新页面都得添加一个新路由.为此我们在项目中会专门的一个文件夹来管理路由,如下图所示 那么有没有一种方案,能够实现我们在文件夹中新建了一个vue ...
- 求大的组合数模板 利用Lucas定理
Lucas定理:A.B是非负整数,p是质数.A B写成p进制:A=a[n]a[n-1]…a[0],B=b[n]b[n-1]…b[0]. 则组合数C(A,B)与C(a[n],b[n])C(a[n-1], ...
- 楼房重建 HYSBZ - 2957
楼房重建 HYSBZ - 2957 第一次写分块, 写了之后觉得真的是暴力的一比. 题解:先讲n分成 sqrt(n)块,记得补上末尾的, 然后就是对于每一次更新操作, 都重新的讲这个块里面的有效楼放入 ...
- codeforces 820 C. Mister B and Boring Game(找规律)
题目链接:http://codeforces.com/contest/820/problem/C 题解:显然a<=b的规律很好找只要 例如a=2,b=5,只要这样排列就行abbbbbbabbbb ...