难得遇到一次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的启动参数(不知道是不是动态参数修改,猜测不是)

最新文章

  1. ASP.NET Core 数据保护(Data Protection 集群场景)【下】
  2. TextClock的基本使用
  3. SUSE Linux下新建Weblogic 10.3非admin服务
  4. 一道模板元编程题源码解答(replace_type)
  5. Dijkstra算法求解最短路径分析
  6. .net 安装remoting服务
  7. mysql 查询每个分组前N条记录
  8. 关于ThinkPHP下使用Uploadify插件 仅有火狐提示HTTP Error (302)错误的解决办法
  9. [LeetCode][Python]Longest Palindromic Substring
  10. 手机新闻网站,掌上移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发
  11. Spring装配Bean之XML装配bean
  12. Eclipse 枚举类报错
  13. [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
  14. java多线程(4)---volatile关键字
  15. tensorflow 的数据管理
  16. [Spark][Python]获得 key,value形式的 RDD
  17. Monogdb 按2个字段值之间的比较
  18. 多线程(threading)示例
  19. 【Web】CSS实现绝对定位元素水平垂直居中
  20. UART协议总结

热门文章

  1. 小白学Python | 最简单的Django 简明教程
  2. linux实操_shell流程控制
  3. hbase实践(十六) BlockCache
  4. Spring框架集成FreeMarker
  5. WeakReference 弱引用
  6. adb常用命令及简介
  7. The method format(String, Object[]) in the type String is not applicable for the arguments
  8. 第二章 C#语法快速热身
  9. sql server 函数学习
  10. Activiti服务类- FormService服务类