windows下配置tomcat服务器的jvm内存大小的两种方式
难得遇到一次java堆内存溢出(心里想着,终于可以来一次jvm性能优化了$$)
先看下报错信息,
java.lang.OutOfMemoryError: GC overhead limit exceeded
错误就是发出了这样的信号: 执行垃圾收集的时间比例太大, 有效的运算量太小. 默认情况下, 如果GC花费的时间超过 98%, 并且GC回收的内存少于 2%, JVM就会抛出这个错误。
造成这个问题的原因可能是项目里某个地方定义的太多的map,list对象,或者一次从数据库中查询的数据量过大。
资料来源:OutOfMemoryError系列(2): GC overhead limit exceeded
查看tomcat服务启动信息,默认tomcat的内存分配大小是初始化128,最大值为256MB

根据网上教程,在tomcat\bin\catalina.bat文件
rem ----- Execute The Requested Command --------------------------------------- echo Using CATALINA_BASE: "%CATALINA_BASE%"
echo Using CATALINA_HOME: "%CATALINA_HOME%"
echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
在Execute The Request Command注释下面添加参数,设置jvm内存最大值
set "JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m"
配置完之后再次查看启动日志tomcat/logs/catalina.2019-07-08.log
发现日志里显示,jvm参数还是128 - 256 没变化
继续查询资料,我们修改的catalina.bat配置文件对以服务方式启动的tomcat无效果Tomcat内存设置详解
6.0以上的tomcat需要在tomcatw.exe文件中设置参数,比如我的tomcat9w.exe

用这个方法的前提是我们的服务名称必须是tomcat9,否则这个tomcat9w.exe运行会报错,服务tomcat9未安装
安装tomcat服务的方法:在tomcat/bin目录下,运行命令 service.bat install
Usage: service.bat install/remove [service_name] [/user username]
服务安装完后,设置如上图的配置,启动服务后,内存修改完成。
看下监控的截图(这张图原本的jvm内存最大为256MB时,内存使用率为89%),修改内存为512MB之后就好很多了

通过以上内存的配置,可以总结windows下修改tomcat服务器jvm内存的两种方法:一种,直接修改catalina.bat文件,修改完后可以通过startup.bat方式启动直接生效
另一种就是作为windows服务后台运行方式启动,这个需要修改tomcatw.exe的启动参数(不知道是不是动态参数修改,猜测不是)
windows下配置tomcat服务器的jvm内存大小的两种方式的更多相关文章
- Linux 下修改Tomcat使用的JVM内存大小
我的服务器的配置: # OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...
- Windows下配置Tomcat服务器
Tomcat服务器是Apache开源基金会的一个项目,tomcat不仅能作为静态文件的服务器,也可以作为JSP/Servlet的web容器,而且使用广泛,性能也不错,那么下面来配置一个基本的基于tom ...
- Linux下配置Tomcat服务器
Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...
- 如何在Windows下安装Tomcat服务器
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选服务器.在Windows下安装 ...
- 修改Tomcat使用的JVM内存大小
我的服务器的配置: # OS specific support. $var _must_ be set to either true or false. JAVA_OPTS="-Xms10 ...
- Nginx配置同一个域名同时支持http与https两种方式访问
Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...
- centos7下kubernetes(6。kubernetes创建资源的两种方式)
两种方式:1.命令:2.配置文件 之前我们在部署K8S的时候分别用到了命令和配置文件创建K8s资源: 1.命令方式:kubectl run nginx-deployment --image=nginx ...
- Windows下配置Apache服务器并支持php
php环境的配置相对来说比较繁琐,网上教程大部分都是放一起说,总体感觉比较乱,其实Apache是一款通用的服务器软件,可以用来配置支持静态页面,php.Python.Java甚至asp等服务端语言,要 ...
- [转]JVM内存溢出的几种方式比较
转载自:https://github.com/pzxwhc/MineKnowContainer/issues/25 包括: 1. 栈溢出(StackOverflowError) 2. 堆溢出(OutO ...
随机推荐
- Petrozavodsk Winter Training Camp 2018 Jagiellonian U Contest Problem A. XOR
先把所有的数异或起来 得到sum 然后sum有一些位是1一些位是0 是0的位表示所有数里面有这位的数是偶数个 则无论怎么划分数 这一位对最终的答案都是不会有贡献的 因为偶数=偶数+偶数/奇数+奇数 ...
- Spring boot dubbo+zookeeper 搭建------基于gradle项目的消费端与服务端分离实战
1. Dubbo简介 Dubbo是Alibaba开源的分布式框架,是RPC模式的一种成熟的框架,优点是可以与Spring无缝集成,应用到我们的后台程序中.具体介绍可以查看Dubbo官网. 2. Why ...
- 「ZJOI2014」力 FFT
FFTl裸题,小于的部分直接做,大于的部分倒序后再做就行了. #include <bits/stdc++.h> using namespace std; const int MAXN = ...
- 002_linuxC++_.h和.c文件
(一)程序修改001_linuxC++之_类的引入 (二)修改成为.h和.c文件 #include <stdio.h> #include "person.h" int ...
- MongoDB 运维实总结
一.MongoDB 集群简介 MongoDB是一个基于分布式文件存储的数据库,其目的在于为WEB应用提供可扩展的高性能数据存储解决方案.下面将以3台机器介绍最常见的集群方案.具体介绍,可以查看官网 h ...
- html预加载之link标签
我们之前提及过link rel 里面有preload和prefetch.modulepreload,都是用于预加载资源 <link rel="preload" href=&q ...
- HDU 1087 Super Jumping! Jumping! Jumping! ——(LIS变形)
和之前那个长方体最大高度是换汤不换药的题目.每次找之前最大的一个能接的接上即可.代码如下: #include <stdio.h> #include <algorithm> #i ...
- Ubuntu常用命令及git常用命令
1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...
- 对@repository,@Service, @Compent,@Controller注解的理解
注解是没什么本质区别,都是声明作用,取不同的名字只是为了更好区分各自的功能. @Repository 用于标注数据访问组件,即DAO组件 @Service 用于标注业务层组件 @Controller ...
- nginx 配置简单反向代理
假设端口号是 3000 server { listen ; server_name your.domain; location / { proxy_pass http://127.0.0.1:3000 ...