2011-07-18 14 views
3

Linux CentOSマシンでJava Webアプリケーション(J2EE + Tomcat6 + struts2 + hibernate)を実行しています。 問題は、 "トップ"コマンドはJavaがメモリの14%(8Gのうち)を使用していますが、要約情報のセクションでは、全体の空きメモリが300Mだと言います! (ちょうどMem、スワップではない)Java Webapp:奇妙なメモリ統計

PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ SWAP TIME CODE DATA nFLT COMMAND                                 
    666 root  20 0 1352m 1.2g 10m S 7.6 14.7 663:00.37 158m 663:00 36 1.3g 65 java 
    3170 mysql  18 0 145m 33m 5044 S 0.7 0.4 753:51.96 111m 753:51 6496 132m 100 mysqld                                 
    17340 root  15 0 2332 1080 800 R 0.3 0.0 0:00.05 1252 0:00 56 468 0 top                                  
     1 root  15 0 2068 628 536 S 0.0 0.0 0:02.58 1440 0:02 32 280 20 init                                  
     2 root  RT -5  0 0 0 S 0.0 0.0 0:00.18 0 0:00 0 0 0 migration/0                                
     3 root  34 19  0 0 0 S 0.0 0.0 0:00.00 0 0:00 0 0 0 ksoftirqd/0                                
     4 root  RT -5  0 0 0 S 0.0 0.0 0:00.00 0 0:00 0 0 0 watchdog/0                                
     5 root  RT -5  0 0 0 S 0.0 0.0 0:00.01 0 0:00 0 0 0 migration/1                                
     6 root  34 19  0 0 0 S 0.0 0.0 0:00.00 0 0:00 0 0 0 ksoftirqd/1                                
     7 root  RT -5  0 0 0 S 0.0 0.0 0:00.00 0 0:00 0 0 0 watchdog/1                                
     8 root  RT -5  0 0 0 S 0.0 0.0 0:00.01 0 0:00 0 0 0 migration/2 

. 
. 
. 
and so on... 



Mem: 8300688k total, 7998720k used, 301968k free, 52452k buffers 
Swap: 16779884k total,  60k used, 16779824k free, 6511228k cached 

何が問題なのですか?何が秘密裏にメモリを使用していたでしょうか?非ヒープか何か? ありがとうございました。

+1

トップの統計情報をすべて投稿できますか?マシン上でJavaを実行するだけではありません。 – Thomas

+0

@トーマス:私はそれをバディーでした。彼らはすべてほぼ0%です! –

答えて

1

6511228k cachedは、お使いのOSで〜6.5GBのRAMがキャッシュに使用されていることを意味します。

+0

'free -lm'もメモリ使用量を検査するのに便利です。 – Vlad

+0

ew ...!ありがとう!その小さなエシャク! ;) –

1

Java 5+を使用している場合は、jconsoleを使用してJVMに接続できるはずです。そこには、JVMが使用するすべてのメモリを見ることができるはずです。 JVMの実装にバグがない限り(私は疑うでしょうが)、そこに表示されている数字はすべてこのJVMが使用するものです。

それが十分に低い場合は、他のプロセスがそのメモリを使用します。