难得遇到一次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内存大小的两种方式的更多相关文章

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

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

  2. Windows下配置Tomcat服务器

    Tomcat服务器是Apache开源基金会的一个项目,tomcat不仅能作为静态文件的服务器,也可以作为JSP/Servlet的web容器,而且使用广泛,性能也不错,那么下面来配置一个基本的基于tom ...

  3. Linux下配置Tomcat服务器

    Linux下配置Tomcat服务器和Windows下其实差不多,可以去官网下载安装包释放或者在线下载,只是当时下载的windows.zip文件,现在下载.tar.gz格式的即可,下面使用命令行的方式安 ...

  4. 如何在Windows下安装Tomcat服务器

    Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选服务器.在Windows下安装 ...

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

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

  6. Nginx配置同一个域名同时支持http与https两种方式访问

    Nginx配置同一个域名http与https两种方式都可访问,证书是阿里云上免费申请的 server{listen 80;listen 443 ssl;ssl on;server_name 域名;in ...

  7. centos7下kubernetes(6。kubernetes创建资源的两种方式)

    两种方式:1.命令:2.配置文件 之前我们在部署K8S的时候分别用到了命令和配置文件创建K8s资源: 1.命令方式:kubectl run nginx-deployment --image=nginx ...

  8. Windows下配置Apache服务器并支持php

    php环境的配置相对来说比较繁琐,网上教程大部分都是放一起说,总体感觉比较乱,其实Apache是一款通用的服务器软件,可以用来配置支持静态页面,php.Python.Java甚至asp等服务端语言,要 ...

  9. [转]JVM内存溢出的几种方式比较

    转载自:https://github.com/pzxwhc/MineKnowContainer/issues/25 包括: 1. 栈溢出(StackOverflowError) 2. 堆溢出(OutO ...

随机推荐

  1. linux学习-添加多个硬盘和lvm配置

    原文 一般,服务器会有多个硬盘,一块硬盘分区安装操作系统,另外多块硬盘分区做存储使用.现在测试添加多块硬盘分区,使用lvm进行实现动态磁盘分配. 1.新增硬盘查看 fdisk -l 可以看到新增的两块 ...

  2. Dinic 与 SAP(ISAP?) 模板

    发一个最大流模板 DinicDinicDinic //vis为int类型 //sz为总点数 namespace Dinic { inline bool bfs() { int head = 0, ta ...

  3. 2、python--第二天练习题

    #1.有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中. #即: {'k ...

  4. 一些特殊的矩阵快速幂 hdu5950 hdu3369 hdu 3483

    思想启发来自, 罗博士的根据递推公式构造系数矩阵用于快速幂 对于矩阵乘法和矩阵快速幂就不多重复了,网上很多博客都有讲解.主要来学习一下系数矩阵的构造 一开始,最一般的矩阵快速幂,要斐波那契数列Fn=F ...

  5. LibreOJ #102. 最小费用流

    二次联通门 : LibreOJ #102. 最小费用流 /* LibreOJ #102. 最小费用流 Spfa跑花费 记录路径 倒推回去 */ #include <cstring> #in ...

  6. CSPS模拟75&76

    感觉自己还是太菜了... 最近考试一直想不出来正解.难受(然而蒟蒻的博客没人看也要不来小猪peiqi的图) 模拟75:血炸... 考场上推了快两个小时的T1式子,然后心态炸裂,然后我也不知道自己干了什 ...

  7. 敌兵布阵(HDU 1166)

    Problem Description C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任 ...

  8. 文件对比工具 Beyond Compare 4.2.9中文破解版for win 附通用注册码

    链接: https://pan.baidu.com/s/1yYxPo8nNv0PuOA1ZC9-F1w 提取码: v76g 注册码: --- BEGIN LICENSE KEY --- H1bJTd2 ...

  9. Python WEB框架之Flask

    前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenType....): Tornado: ...

  10. global 和 nonlocal关键字

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了. def fun(): global num1 num1=2 print("函数内修改后num1=&qu ...