Java 网络应用程序 : strange memory statistics

标签 java memory-leaks memory-management

我在 Linux Centos 机器上运行一个 Java 网络应用程序(J2EE+Tomcat6+struts2+hibernate)。 问题是“top”命令说 java 使用了 14% 的内存(共 8G),但在摘要信息部分,说总的可用内存是 300M! (只是内存,不是交换)

    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

问题是什么?什么可以 secret 使用内存?非堆还是什么?! 谢谢小伙伴们。

最佳答案

6511228k cached 表示您的操作系统使用约 6.5GB 的 RAM 进行缓存。

关于Java 网络应用程序 : strange memory statistics,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730137/

相关文章:

java - 让 Selenium firefox 驱动程序正确退出 - Java

memory - 为什么包装 Data.Binary.Put monad 会造成内存泄漏?

java - 新对象是从 eden 空间分配的还是 eden + fromSurvivor 空间分配的?

ios - 不在 Xamarin 的 UIViewController 上调用 dealloc

ios - 为什么保留计数在 Debug模式和运行模式下不同?

c# - 什么时候函数内的局部变量*实际上*被分配

java - 使用 javax.xml 添加新 POJO 时出现 ClassCastException

java - 读取加密的PKCS8 SpongyCaSTLe Java

java - 如何在 Eclipse 3.7.1 中安装 Birt 报表设计器

android - 将对 Activity 的引用传递给实用程序类 android