2 njustwalker njustwalker 于 2016.09.08 19:44 提问

CentOS Tomcat 内存占用问题

CentOS 6.5
Tomcat 7.0.55
和在win7下面跑同样个程序内存占用相差巨大
win7下任务管理器看内存占用500-600M之间浮动
CentOS 刚启动500M 随着时间推移越来越大 最高达到过1.7G
用jconsole看过CentOS下堆内存和非堆内存
稳定在150M和60M左右 用jmap看到的也是相同数据
并且检查过DirectMemory 直接通过OS分配的内存 也没有超过默认64m限制
栈内存已经调整到256k最小值
线程是有波动的 但是总内存是越来越大和线程数波动不成正比
用jmap dump出内存 然后用eclipse mat分析过 大概有80M+的内存泄露
求大神指点可能的问题 我已经黔驴技穷了

6个回答

wangzhongzhou1990
wangzhongzhou1990   2016.09.09 10:25

JAVA_OPTS="$JAVA_OPTS -server -XX:PermSize=128m -XX:MaxPermSize=256m"

njustwalker
njustwalker   2016.09.13 09:14

谢谢上面朋友回复

永久区使用率也不到50%

njustwalker
njustwalker   2016.09.13 09:38

具体情况如下:

Server compiler detected.
JVM version is 24.80-b11

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
MinHeapFreeRatio = 0
MaxHeapFreeRatio = 100
MaxHeapSize = 1073741824 (1024.0MB)
NewSize = 1310720 (1.25MB)
MaxNewSize = 268435456 (256.0MB)
OldSize = 5439488 (5.1875MB)
NewRatio = 2
SurvivorRatio = 8
PermSize = 268435456 (256.0MB)
MaxPermSize = 268435456 (256.0MB)
G1HeapRegionSize = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
capacity = 266338304 (254.0MB)
used = 1242592 (1.185028076171875MB)
free = 265095712 (252.81497192382812MB)
0.46654648668184057% used
From Space:
capacity = 1048576 (1.0MB)
used = 0 (0.0MB)
free = 1048576 (1.0MB)
0.0% used
To Space:
capacity = 1048576 (1.0MB)
used = 0 (0.0MB)
free = 1048576 (1.0MB)
0.0% used
PS Old Generation
capacity = 805306368 (768.0MB)
used = 92039160 (87.77538299560547MB)
free = 713267208 (680.2246170043945MB)
11.429086327552795% used
PS Perm Generation
capacity = 268435456 (256.0MB)
used = 134408312 (128.18175506591797MB)
free = 134027144 (127.81824493408203MB)
50.07099807262421% used

28110 interned Strings occupying 3206696 bytes.

njustwalker
njustwalker   2016.09.13 09:42

top 命令情况如下:
top - 09:38:29 up 66 days, 14:53, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.2%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3924684k total, 3485476k used, 439208k free, 176944k buffers
Swap: 0k total, 0k used, 0k free, 319416k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

2259 www 20 0 2881m 1.8g 12m S 0.0 47.5 29:02.30 java

njustwalker
njustwalker   2016.09.13 09:43

求大侠帮忙分析问题 万分感谢

njustwalker
njustwalker   2016.09.13 10:06

bash-4.1$ jstat -gcutil 2259 1000 20
S0 S1 E O P YGC YGCT FGC FGCT GCT

0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703
0.00 0.00 0.47 11.52 50.09 3592 20.818 3486 899.885 920.703

附上jstat命令状态
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
查看TOMCAT内存使用情况(总结)
您可以用把下列代码放在一个JSP文件中,如写入memory.jsp,放到你的TOMCAT下的任何一应用中,就可以看到你的TOMCAT总大可使用多少内存,已经使用了多少. Document : memory Created on : 2009-4-9, 1:35:17 Author : Administrator --%> %@page contentType="text/html"
centos 7 中tomcat使用过中重启后内存升高问题。
在bin文件夹下使用 shutdown.sh  ,startup.sh管理tomcat  ,shutdown停止tomcat之后,tomcat进程还在内存当中,几次重启关闭之后会导致内存不断升高。 对linux,以及tomcat的认识并不是很深刻,目前采取杀进程的方式解决。 pgrep java 查看tomcat进程pid, kill -9  pid杀掉java进程。 然后启动tomcat
CentOS查看内存占用情况
Mysql启动错误,CentOS查询内存占用
查看LINUX进程内存占用情况
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:  (1)top   top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器   可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle
Tomcat之—— linux/centos 解决Tomcat内存溢出
Tomcat本身不能直接在计算机上运行,需要依赖于操作系统和一个JAVA虚拟机。JAVA程序启动时JVM会分配一个初始内存和最大内存给APP。当APP需要的内存超出内存的最大值时虚拟机就会提示内存溢出,并且导致应用服务崩溃。 一、常见的Java内存溢出有以下三种 1. java.lang.OutOfMemoryError: Java heap space      即JVM Heap溢
Linux之CentOS操作系统日常问题(二):catalina.out占用内存大的问题
问题: 如题,相信在linux系统上部署tomcat项目的筒子都知道,当项目部署上去后,运行一段时间就会发现tomcat的logs里的catalina.out特别占内存。就比如我刚部署上去的项目,才运行一会,内存已如下图: 可以看到,这个catalina.out已经占了1G多内存,久而久之,如果不对其处理,很快虚拟机的空间就会爆满。 解决办法: 咱们可以在在/etc/logrota
Linux下Tomcat占用JVM内存数修改及监控
在Tomcat设计之初,因为考虑到客户的服务器性能不同,防止虚拟内存不足,所以Tomcat默认设置JVM允许使用内存数为最小64M,最大128M,但是在一些项目占用资源比较庞大,或者高并发量的项目中,很容易造成内存不足而Tomcat没有任何征兆就自动停止。    Tomcat占用JVM内存数修改方法及监控方法    Tomcat本身是一个很好的服务器容器,免费,功能强大,身后被很多强大的公
【未解之谜】tomcat占用大量内存的奇怪现象
[root@iZrj97s23bov6rewm9af7aZ ~]# ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 8702 1.2 22.3 2678704 421520
centos7 tomcat优化
一、安装apr 1、安装apr-1.5.2.tar.gz # cd /usr/local/src # wget http://apache.fayea.com//apr/apr-1.5.2.tar.gz # tar -xzvf apr-1.5.2.tar.gz # cd apr-1.5.2 # ./configure --prefix=/usr/local/apr # make
Linux 查看Tomcat内存占用情况
以前服务器还是用 Windows Server 系统的时候,查看一下各个进程对内存的影响就再简单不过了,打开任务管理器跟踪一下相关的 JAVA 进程就OK了。但是服务器如果使用的是 Linux 系统,有不少小伙伴就不知道怎么看了,而且网友的回复也是众说纷纭。我总结了一下,大致有以下三个方向: 1.在 Linux 端写批处理文件,调用查看Tomcat 的内存使用情况; 2.在项目中植入.