Tomcat内存增长分析

从安装到实战:VisualVM全流程分析Tomcat内存泄漏(JDK8+专属教程) 本文提供了一份针对JDK8及以上环境的Tomcat内存泄漏全流程分析实战指南。文章详细介绍了VisualVM的独立安装、必备插件配置,并重点讲解了如何通过设置关键JVM参数(如-XX:+HeapDumpOnOutOfMemoryError)来捕获内存溢出快照,进而利用VisualVM的监控、Visual GC插件及堆转储分析功能,精准定位并解决内存泄漏问题。 阅读详情

事件回放

问题:Tomcat从启动一个项目到加载完毕,这个阶段占用了500+MB
这里写图片描述

之后随便访问项目几个页面,tomcat内存蹭蹭涨到了800+MB。从启动的500+MB到800+MB期间只花了2分钟左右。(pid不同是因为截图问题)
这里写图片描述

dump对比

当时怀疑内存泄露了,于是导出刚启动tomcat的dump文件和已经涨到800多的dump文件进行对比。
这里写图片描述

这里写图片描述

监控JVM

发现没有什么占内存的对象。于是配置tomcat的监控工具来监控JVM。
修改tomcat的conf文件夹里面的tomcat-users.xml

这里写图片描述
然后通过IP:端口/manager/status来访问tomcat监控页面

这里写图片描述

这个时候发现我的JVM最大内存是1797.50 MB。(我的电脑是8G)
但是JVM的最大内存分配规则是:物理内存的1/4(<1GB)
虽然监控工具显示的最大内存我有疑问。但是操作任务管理器显示tomcat的虚拟内存始终在1024MB以内。

开始测试JVM的新生代区内存情况。
这里写图片描述
这个时候新生代区使用的内存还没释放。

这里写图片描述
新生代区的使用内存释放之后

发现tomcat内存不降反而升了。于是又查看了一遍数据,发现新生代区的Total memory内存涨了。
这说明JVM的GC没有把内存还给操作系统。

Tomcat内存配置

这个时候我以为tomcat的内存是不会降了,所以我想给Tomcat设置一个最大值不让他涨。
这里写图片描述

这种方式我试了不生效,操作任务管理器显示tomcat的虚拟内存始终在1024MB以内

打开Tomcat根目录下的bin文件夹,编辑catalina.bat,将其中的%CATALINA_OPTS%(共有四处)替换为:-Xms256m -Xmx512m(这种方式生效)
这里写图片描述

这里写图片描述
提交大小就是分配的虚拟内存,tomcat启动的内存也从500M降到了300M。

结论

因为一直手动操作刷新页面比较累,所以想通过代码循环访问url,这样我就知道tomcat内存到底能涨到多少。(这个时候我还原了Tomcat的配置,所以虚拟内存是1024MB)
这里写图片描述

刚开始刷新的时候,发现tomcat疯狂的涨,不过也只是涨到800+MB了,然后开始慢慢往下掉了,最后掉到了300+MB。
我认为是tomcat的内存是达到了一个临界点,然后才开始把内存回收并返还给操作系统了。

如果有错误请在评论里帮我纠正,谢谢!

Tomcat假死故障排查:从CLOSE_WAIT到内存泄漏的实战指南 在Java Web应用运维中,服务假死是典型的疑难故障,表现为进程存活但丧失请求处理能力。其原理常涉及线程阻塞、资源泄漏或网络连接异常等技术底层问题。从技术价值看,掌握系统化排查方法能极大提升线上服务稳定性保障能力。应用场景覆盖高并发Web服务、微服务架构及容器化部署环境。本文聚焦Tomcat假死场景,深入剖析CLOSE_WAIT连接堆积和HashMap内存泄漏等高频热词的故障机理,提供从系统层到代码层的全链路诊断方案,帮助开发者构建防御性监控体系。 阅读详情

相关推荐

对内存泄漏的监控定位

性能测试之内存泄漏 第一步在tomcat中配置jvm参数 1、进入tomcat中bin目录下catalina.sh文件 增加: -Xms2048m,初始堆大小,建议&amp;amp;amp;amp;lt;物理内存的1/4,默认值为物理内存的1/64 -Xmx2048m,最大堆大小,建议与-Xms保持一致,默认值为物理内存的1/4 -Xmn512m,新生代大小,建议不超过堆内存的1/2 -Xss256k,线程堆栈大小,建...

weixin_43165686的博客 1028

tomcat常用优化方法

tomcat优化配置参数 优化内存,主要是在bin/catalina.bat/sh 配置文件中进行。linux上,在catalina.sh中添加: JAVA_OPTS="-server -Xms1G -Xmx2G -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:MaxPermSize=256m -XX:PermSize=128...

weixin_45942735的博客 658

Yolov2 训练时anchor是如何使用的?build_target

0.简略描述 1.将真值检测框变换到特征图尺度上 2.计算以特征图每个网格中心为中心点时所有锚框与真值检测框的交并比 3.取与真值检测框交并比最大的锚框的id,及真值检测框中心所在cell的id,有此,可将真值检测框与预测结果对应起来 4.计算位置回归损失,置信度损失,分类损失 1,网络的输出 图1 yolov2 网络对于检测框位置大小的输出是: 对于1个batch网络的输出的shape为[batch_size, H*W*num_anchors, 5+num_classes], 其中: num_

机器人视觉感知 2818

tomcat线程被打满怎么排查_优化体系--tomcat参数优化(内存、线程、压缩、集群、ARP)...

概述关于tomcat优化方面的内容,我这边主要从内存、线程数、打开压缩功能、集群和ARP几个方面来做优化。这里面ARP相对比较少用。优化相关1、内存优化:配置文件:$TOMCAT_HOME/bin/catalina.shexport JAVA_OPTS="-server -Xms1400M -Xmx1400M -Xss512k -XX:+AggressiveOpts -XX:+UseBiasedL...

weixin_39616379的博客 678

DevEco Studio在初始化时出现Installing pnpm@8.13.1...npm ERR! code ETIMEDOUTnpm ERR! syscall connectnpm E

npm的仓库源设置的有问题,下载不了鸿蒙相关组件,所以你的启动依赖都没有,或者以前下载过npm,使用的源改的乱七八糟了。以前安装过前端相关的node.js的话,启动的时候记得使用管理远权限。(DevEco Studio)就出错,npm显示超时。

qq_56392862的博客 2628

了解随机振动疲劳分析中 Ansys nCode DesignLife 的平均应力校正

通过选择静态环境,我们可以将其结果视为疲劳计算的平均应力,如图 3 所示,因此从静态偏移载荷工况中提取的平均应力用于转移预测雨流计数中所有循环的平均值。您可以通过观看下面的教学视频获得宝贵的见解,该视频将指导您完成利用 Ansys nCode DesignLife 分析平均应力对随机振动载荷下结构的影响的过程。它基于 R 比率或平均应力水平。另一方面,平均应力校正可以帮助消除平均应力的负面影响,提高结果的保真度。Ansys nCode 提供先进的平均应力校正技术,使工程师能够考虑平均应力对疲劳寿命的影响。

jkh920184196的博客 1519

tomcat内存占用过高_jvm疯狂吞占内存,罪魁祸首是谁?

导读JVM是Java Virtual Machine的缩写,中文名为Java虚拟机。它是一种用于计算设备的规范,是一个虚构出来的计算机,主要通过在实际的计算机上仿真模拟各种计算机功能来实现的。在实际运用过程中,易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查......现象:前段时间发现某台开发机上各个微服务进程占用内存很高,这里记录下解决思路,仅供参考。Centos6....

weixin_39913807的博客 9556

在linux上本地大模型部署与推理

您的Python脚本(客户端)可能在您的个人电脑上,而模型服务(服务器)在远程Linux服务器上。如果您的服务器有强大的NVIDIA GPU,并且您对性能有更高的要求(例如需要高吞吐量),vLLM是更好的选择。这种方式无需向公网暴露服务器端口,而是通过加密的SSH通道将服务器的端口“映射”到您的本地电脑上。我们将启动一个API服务器,它会加载您指定的模型,并等待您的代码前来调用。如果您直接在SSH窗口运行上面的命令,一旦您关闭窗口,服务就会停止。这是根据您的原始代码修改的版本,适配本地vLLM服务。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 2055

tomcat内存一直增长_小计Tomcat的调优思路

作者:王森来源:https://www.cnblogs.com/wangsen/p/9337969.html描述最近在补充自己的短板,刚好整理到Tomcat调优这块,基本上面试必问,于是就花了点时间去搜集一下tomcat调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,tomcat调优大致分为两大类:一、tomcat的自身调优采用动静分离节约to...

weixin_39616056的博客 2314

【Flutter 面试题】 怎么减少Widget的重新构建?

关于 const 关键字的使用:在 Flutter 开发中,任何时候当你确定一个 Widget 在其整个生命周期内都不会发生变化时,使用 const 关键字声明这个 Widget。这样的声明告诉 Flutter 框架这个 Widget 可以在编译时生成,后续的构建周期中可以重用已经创建的 Widget,从而避免了重复的构建开销。这适用于静态文本、图标或整个不变的 Widget 树。

Code Metaverse 1577

华为OD机考双机位C卷 - AI处理器组合 (Java & Python & JS & GO & C++ & C)

> 2026华为OD机试双机位C卷 - 华为OD上机考试双机位C卷 华为OD机试双机位C卷真题目录点击查看: [【全网首发】2026华为OD机位C卷 机考真题题库含考点说明以及在线OJ(OD上机考试双机位C卷)](https://blog.youkuaiyun.com/banxia_frontend/article/details/155503868)

算法大师! 233

Windows java.exe 内存暴涨分析与解决、ldea跑 java \ tomcat 内存无限增长

最近突然遇到个问题:用idea 跑 Tomcat 服务,不到30分钟 内存就吃完了。用任务管理器查看,发现java.exe占了10G内存!! 查了各种方法 〇、 idea Tomcat 配置 没用!!! 一、ideaidea64.exe.vmoptions 安装目录下的 bin 下的 idea64.exe.vmoptions 配置,还是C:\Users\Admini...

亲测,只为展现最完美的有效! 6530

VisionPro - 基础 - 模板匹配技术-Search/PMAlign/PatMax(6)-纹理屏蔽和重叠匹配

Note:对已经有了,1已经训练好的模板,2一组使能的自由度,3一个待测的实时图片,PatMax 就能模板匹配的给出变化的最佳描述。对一些综合的模板,这三个输入值往往是一起影响最后的变换结果信息。例如,如果我们训练了一个圆形的模板,然后搜索一个角度自由度包括一个圆,那么将会有无限个可能的角度满足要求。这些组合的模板匹配,被官方名为:退化系统,a degenerate system的结果被叫做a degenerate result 退化结果4.2 退化系统例子。

山云的专栏 1534

程序更新后tomcat内存持续增长原因分析

很可能由于更新程序的备份文件放到了class下面,

z062613的专栏 1197

Qwen大模型参数解析

Qwen系列模型的参数主要分为(决定模型结构)和(控制生成行为)两类。由于该系列已迭代多个版本,参数设计也在不断演进,我会结合最新版本为你进行分层梳理。

yeyiboy的博客 167

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jprofiler 查看程序内存泄露

在最近的工作中,通过JProfiler解决了一个内存泄漏的问题,现将检测的步骤和一些分析记录下来,已备今后遇到相似问题时可以作为参考。 运行环境: Tomcat6,jdk6,JProfiler8 内存泄漏的现象: 1. 在服务器中执行某些批量操作的时候,发现内存只升不降;就算gc后,内存也不能被完全释放; 2. 除非重启tomcat服务器,内存

Code-lover's Learning Notes 1万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

使用JProfiler进行内存分析-----内存泄露,分析内存文件

今天项目组其他同事遇到内存泄露的问题。我记得之前在Eclipse中有Eclipse自带的插件某某version查看Dump文件 现在换成了IDEA工具,同事使用JProfiler文件进行内存分析,记录一笔 使用JProfiler进行内存分析 在最近的工作中,通过JProfiler解决了一个内存泄漏的问题,现将检测的步骤和一些分析记录下来,已备今后遇到相似问题时可以作为参考。 运行环境...

yinni11的博客 5602

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java评估内存,JProfiler进行Java运行时内存分析

在最近的工作中,通过JProfiler解决了一个内存泄漏的问题,现将检测的步骤和一些分析记录下来,已备今后遇到相似问题时可以作为参考。运行环境:Tomcat6,jdk6,JProfiler8内存泄漏的现象:1. 在服务器中执行某些批量操作的时候,发现内存只升不降;就算gc后,内存也不能被完全释放;2. 除非重启tomcat服务器,内存永远不会被释放,反复执行这些操作,会导致无可用内存,tomcat...

weixin_35738304的博客 405

java.exe 内存_windows java.exe内存暴涨解决、idea跑java\ tomcat内存无限增长

最近突然遇到个问题:用 idea 跑 Tomcat 服务,不到30分钟 内存就吃完了。用任务管理器查看,发现 java.exe占了10G内存!!查了各种方法一、 idea Tomcat 配置没用!!!二、idea idea64.exe.vmoptions安装目录下的 bin 下的 idea64.exe.vmoptions 配置,还是 C:\Users\Administrator\.IntelliJ...

weixin_35943776的博客 477

记一次生产环境tomcat线程数打满情况分析

欢迎使用Markdown编辑器 现象重现 使用grafana监控发现服务某个节点的cur线程数会暴涨直至打满且一直无法回收 原因分析 解决方案与建议

4878

使用JProfiler进行内存分析

在最近的工作中,通过JProfiler解决了一个内存泄漏的问题,现将检测的步骤和一些分析记录下来,已备今后遇到相似问题时可以作为参考。   运行环境: Tomcat6,jdk6,JProfiler8   内存泄漏的现象: 1. 在服务器中执行某些批量操作的时候,发现内存只升不降;就算gc后,内存也不能被完全释放; 2. 除非重启tomcat服务器,内存永远不会被释放,反复执行这些操作...

weixin_33940102的博客 936

java,tomcat 性能,内存调优

目前在搜集内存调优的信息,以清单的形式记录。

ftm_csdn的博客 208

记一次内存分析优化

场景: 每天一次对大文件入库,定时任务+多线程方式 问题描述: heap内存大致呈阶梯式增长, 新生代/老年代使用率 tomcat进程内存使用率 问题分析 初步定为内存未回收. 根据dump文件查找对应类相关对象进行分析. 线程池也关闭了, 其相关引用的内存只有kb级别.所以内存是可以回收的. 所以代码层面,应该不是代码问题. 而有几百次GC(Allocation Failure),而Full GC只有5次, 查找其中1次,Old Gen回收后降到4%,所以是可以回收的. 因此原因可能是yong区太小导

fay的博客 786

java内存溢出让tomcat停止,关于Java Tomcat 内存溢出排查心得分享

我网站不知道什么时候,开始内存飙升,从 Tomcat 启动后,初始内存占用4%~5%左右,到20%、40%最后服务器卡死,SSH都连不上服务器,不得不重启。但是我知道是我程序的问题。然后分析问题,解决问题。陆陆续续持续了一个多月,下面分享解决思路。一、定位造成内存溢出可能存在的问题io流操作文档没关闭流。往一个静态集合变量里一直压栈。连接没释放。Java队列没消耗。Ehcache缓存使用量过...

weixin_39728221的博客 586

线上内存泄漏排查

发现linux上服务 刚启动的时候是 占用700MB, 一直在跑商品同步,初步怀疑是商品同步的时候导致内存泄漏 开始排查 ps -aux|grep tomcat 使用查看内存 发现占用 2.5G 查看到 端口是 47407 使用 jmap -dump:live,format=b,file=heap5.hprof 47407 生成快照 heap.hprof idea安装 j...

Summer_i的博客 1010
上一篇: ssm mybatis 配置多个 mapper 目录
下一篇: Ubuntu安装 Docker
普通网友
博客等级 码龄4年 4037粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值