tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Eric Chua <>
Subject Re: Tomcat 8/Redhat Linux 6.6 /Kernal 2.6.32 - Memory Won't Release
Date Tue, 04 Apr 2017 13:56:50 GMT
 blockquote, div.yahoo_quoted { margin-left: 0 !important; border-left:1px #715FFA solid !important;
padding-left:1ex !important; background-color:white !important; } I need some direction.  It
seems like the solution was to use 
-XX:MinHeapFreeRatio=25 -XX:MaxheapFreeRatio=50
While looking at the net,  are there specific parameters for red hat Linux?  If so,  where
do you find them?  RHL has some parameters for JBoss but can't find much for tomcat.

Sent from Yahoo Mail for iPhone

On Monday, March 20, 2017, 7:55 PM, Eric Chua <> wrote:

I use free -m , ps and top.  I have three separate web applications.  One that runs one
Tomcat7/Java 7, one built on Java8/Tomcat8 and one that  was converted from Java7/Tomcat7
to Java8/tomcat8.  When running our Java 7 application, it takes very little memory running
on windows and Linux. For the Java8/Tomcat 8 applications, the memory balloons for both to
the point all other applications slow down. We are running seeing this issue in QA right now. 
We noticed that our UAT didn't have this issue so we moved the code over to QA and pointed
to the UAT DB environment.  The problem seems to go away but when we take the same UAT Code
on QA server and point to the QA DB, the problem (memory ballooning) came back. We are still
testing but noticed that we do a monthly patch. Our QA server which was recently patched has
a newer patch than our UAT environment.  We are going to try to recreate the same problem
with our UAT environment tomorrow.  It is strange that the QA db seems to trigger the issue
but it might be because QA has many more records.  What can't be explained is the memory
that disappears. We attempted to clear the memory cache by freeing it up(Aurelien Suggestion)
and it doesn't seem to work.  The memory is being held or utilized.  I am not the unix admin
so I have to keep going back and forth with him and we are constantly rebooting the server
to recover the memory to try to figure out this issue.

QA Server - Linux QA 2.6.32-642.15.1.el6.x86_64
UAT - Linux UAT 2.6.32-642.13.1.el6.x86_64

The administrator is pointing to our application and says he believes we have a memory leak.
We are using JProfiler, and can't find any leak.  We have a garbage collection log. Would
that help to identify the issue?
Thanks for everyone's input.  Still looking. Hoping tomorrow we get a more definitive answer
on the source of the issue.


    On Monday, March 20, 2017 5:08 PM, calder <> wrote:

 On Mon, Mar 20, 2017 at 4:46 PM, Eric Chua <> wrote:

> siteadm@mavs01web11q:/data/tools/jvmtop $ top -U siteadm
> top - 12:41:20 up 19 min,  3 users,  load average: 1.25, 1.24, 0.87
> Tasks: 130 total,  1 running, 129 sleeping,  0 stopped,  0 zombie
> Cpu(s): 98.5%us,  1.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.5%si,  0.0%st
> Mem:  16334352k total, 15623536k used,  710816k free,    84096k buffers
> Swap:  4128764k total,        0k used,  4128764k free,  339484k cached
> 2019 siteadm  20  0 6054m 4.1g  17m S 98.0 26.5  11:29.56 java
> 2523 siteadm  20  0 19288 1452 1080 R  0.3  0.0  0:00.02 top
> 1950 siteadm  20  0  105m 2100 1560 S  0.0  0.0  0:00.14 bash
> On Monday, March 20, 2017, 10:21 AM, Eric Chua <> wrote:
> siteadm  2007    1  7 11:04 pts/0    00:00:00 /data/java/jdk1.8.0_121/bin/java

> My kernel is 2.6.32-642.15.1.elf.x86_64
> Memory gets all allocated and  after I kill it only a portion is recovered.  Any ideas?
> top - 11:18:36 up 16 min,  2 users,  load average: 1.92, 1.39, 0.68
> Tasks: 123 total,  1 running, 122 sleeping,  0 stopped,  0 zombie
> Cpu(s):  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
> Mem:  16334352k total, 11215624k used,  5118728k free,    33788k buffers
> Swap:  4128764k total,        0k used,  4128764k free,  313940k cached

> 1931 siteadm  20  0  105m 2120 1568 S  0.0  0.0  0:00.10 bash
> 2319 siteadm  20  0 19288 1460 1092 R  0.0  0.0  0:00.09 top

Please do not top-post - if that term is unfamiliar to you, please
read this before posting again.

"top" is simply a "ps" that refreshes its output every so often.
A word of warning - for "ps" (and of course "top"), the output of VSZ
and RSS are almost **always wrong**.    If that statement is doubtful
to anyone, choose a process in the ps list and run "pmap -d <pid#>"
and compare the results - you will see that the ps output is usually
over-inflated (we'll not get into the why's here).

If you are worried about the "Mem: 16334352k total, 11215624k used,
5118728k free" output from ps/top, don't be - Linux will take up RAM
to use for caching, and in many cases, you may see a Linux (or Unix)
system where there is almost NO available memory.  But don't be
alarmed, because Linux will provide memory from the pool at new
processes are launched.

I firmly believe someone is mis-interpreting the output of ps/top on
this machine. I have worked with many a Linux "admins" who don't quite
understand how to interpret the output data of the various utilities
or how the Kernel works.

Let's look at your "before and after" ps output just above. You have a
Java process (PID 2019) running and in the second output, we see the
Java process is now gone (and no zombies).  I think what ya'll are
concerned about is that the "11215624k used" hasn't dropped much.  As
I stated earlier, don't fret over that - that's standard Linux

As I stated in my previous post, if you REALLY want to see if there is
some rogue Java process, run
"ps aux | grep java" (best as superuser),
and see if you find more than one Java process.  But it's my opinion
that the ps/top output is confusing folks.

BTW, how are you killing the Java process? "kill -9"? if yes, not the
best way. The best way to stop a Tomcat Java process on a Linux system
is (adjust the shutdown port # if it is not 8005)
$ printf "SHUTDOWN" | nc localhost 8005

To unsubscribe, e-mail:
For additional commands, e-mail:


  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message