tomcat内存占用过高排查小结

假设tomcat进程PID为16818

确认是不是内存本身分配过小:jmap -heap 16818

找到最耗内存的对象:jmap -histo 16818 (带上:live则表示先进行一次FGC再统计,如jmap -histo:live 16818)

导出内存转储快照:jmap -dump:live,format=b,file=heap.bin 16818 (使用Eclipse mat分析)

统计进程打开的句柄数:ls /proc/16818/fd |wc -l

统计进程打开的线程数:ls /proc/16818/task |wc -l

参考文章:

Linux下分析Java程序内存(pmap、jmap、jstat)

内存泄露排查工具到底哪家强?

关于Java Tomcat 内存溢出排查心得分享

时间: 2024-10-10 21:11:28

tomcat内存占用过高排查小结的相关文章

CLR Profile解决内存占用过高

CLR Profile解决内存占用过高的问题 炮哥:"嘿,哥们,忙啥呢,电脑卡成这逼样." 勇哥:"在用CLR Profile工具分析下FlexiPrint的内存占用情况." 炮哥:“哎哟,不错啊,玩高级的了.” 勇哥:“也没有啊,就是发现点击查询按钮查询数据时,如果数据量一大的话,内存上上升了好几个M,所以第一感觉就不太正常.正好以前也了解过CLR Profile,但一直没怎么具休的用过,这次正好拿来研究研究.” 炮哥:“Nice job,要向你学习,能够主动发现

cocos2dx 中切换场景内存占用过高的处理

cocos2dx 中切换场景内存占用过高的处理 1.运行场景: CCScene *pScene = HelloWorld::scene(); pDirector->runWithScene(pScene); 2.替换场景: (1) CCScene *pScene=SceneTestScene::scene(); CCDirector::sharedDirector()->replaceScene(pScene); (2) CCScene *pScene=SceneTestScene::scen

UIWebView内存占用过高、崩溃、内存溢出

UIWebView内存占用过高.崩溃.内存溢出,有需要的朋友可以参考下. 项目当中模拟器上运行UIWebView读取本地杂志,没问题,真机测试经常内存溢出崩溃. 查了资料因为Html里的js 导致的内存泄漏,每次打开一个连接就会把"WebKitCacheModelPreferenceKey"设置成1. UIWebView 增加 - (void)webViewDidFinishLoad:(UIWebView *)webView { [[NSUserDefaults standardUse

ITM_win_agentCPU内存占用较高

这个问题一般出现在ITM623fp1上,win agent监控的OS是win2003 而且这个问题一般会通过省级ITM来解决 以下是一些通用的解决方法 Kntcma.exe占用CPU 100%  Kntcma.exe占用内存资源较高 server安装ITM 623FP2补丁 agent安装6.2.3.2-TIV-ITM_WIN-IF0001补丁 在KNTENV文件中设置 NT_LOG_THROTTLE=1 和 NT_LOG_APPEND_XML_DATA=0 - 重建性能技术器 cd\windo

(转)aix非计算内存 占用过高 案例一则

两台小型机组成的RAC环境,在用topas查看资源使用情况时,发现一台机器的非计算内存占用过高: MEMORY Real,MB 40959 %Comp 71.6 %Noncomp 20.4 %Client 20.4 而另外一台机器的%Noncomp 只有2.4 这主要是jfs2文件系统的cache,可以用svmon -S的输出来看,是哪些文件: [email protected]/#svmon -S Vsid Esid Type Description PSize Inuse Pin Pgsp

rabbitmq binary/other_system内存占用很高

最近有台服务器的MQ应用占用内存比较偏高,如下: 但是看控制台本身内存中消息积压并不多, 查看rabbtmqctl发现,binary data和other data占据了绝大部分的内存,如下: {memory, [{total,124441400}, {connection_readers,5548680}, {connection_writers,605560}, {connection_channels,2798608}, {connection_other,7775480}, {queue

生产中一次内存使用过高排查过程

本文参考 ? https://blog.csdn.net/top_gun_1/article/details/50777329 我这里知道这个消息是通过bearychart报警消息获得的,报警的信息是,当前服务器内存使用值已经达到了百分之九十二 由于该机器我无法从外网连接,所以周六来公司看了下情况,通过htop命令看到是MongoDB在大量吃内存,物理内存吃掉14个G,虚拟内存吃掉16个G 一点解释: 目前,MongoDB使用的是内存映射存储引擎,它会把磁盘IO操作转换成内存操作,如果是读操作,

linux内存占用过高原因

今天服务器装了个lnmp环境,看了下那个探针, 发现内存占用97%,瞬间吓尿了. google了半天才发现,一般的解释是Linux系统下有一种思想,内存不用白不用,占用了就不释放,听上去有点道理,但如果我一定要知道应用程序还能有多少内存可用呢? Linux下查看内存还有一个更方便的命令,free: [[email protected] ~]# free -m              total       used       free     shared    buffers     ca

linux内存占用过高

top top -H -p 28857jstack 28857 > a.txtjstack -F pid 如果是web应用,可以继续打印线程的堆栈信息+++++++++ strace -p 24167 通过这3步基本可以找出什么原因导致java进程占用那么高CPU资源. 将需要的线程ID转换为16进制格式:printf "%x\n" 2967973ef最后打印线程的堆栈信息:jstack 29679|grep 73ef -A 30