Java Webapp: странная статистика памяти - PullRequest
3 голосов
/ 18 июля 2011

Я запускаю веб-приложение на Java (J2EE + Tomcat6 + struts2 + hibernate) на машине Linux Centos.Проблема в том, что команда top указывает, что java использует 14% памяти (из 8G), но в разделе сводной информации говорится, что общая свободная память составляет 300 МБ!(просто Mem, а не swap)

    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

в чем проблема?что может быть тайное использование памяти?не куча что ли ?!спасибо друзья.

Ответы [ 2 ]

1 голос
/ 18 июля 2011

6511228k cached означает, что ~ 6,5 ГБ ОЗУ используется вашей ОС для кэширования.

1 голос
/ 18 июля 2011

Если вы используете Java 5+, вы сможете подключиться к JVM с помощью jconsole . Там вы сможете увидеть всю память, которую использует JVM. Если в реализации JVM нет ошибки (в чем я сомневаюсь), то числа, которые вы видите, это все, что использует эта JVM.

Если этого достаточно мало, то другой процесс будет использовать эту память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...