AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 100432
Accepted
pstanton
pstanton
Asked: 2010-01-08 05:58:31 +0800 CST2010-01-08 05:58:31 +0800 CST 2010-01-08 05:58:31 +0800 CST

linux下java内存分配

  • 772

我正在使用以下命令运行 4 个 java 进程:

java -Xmx256m -jar ...

并且系统在fedora 12下有8Gb内存。

但是它显然正在交换。

如果 4 x 256m = 1Gb 怎么办?

编辑:另外,所有 8Gb 的内存怎么能用这么少的内存分配给基本上唯一运行的东西?

java不是垃圾收集是因为操作系统告诉它不需要还是什么?


最佳:

top - 20:13:57 up  3:55,  6 users,  load average: 1.99, 2.54, 2.67
Tasks: 251 total,   6 running, 245 sleeping,   0 stopped,   0 zombie
Cpu(s): 50.1%us,  2.9%sy,  0.0%ni, 45.1%id,  1.1%wa,  0.0%hi,  0.8%si,  0.0%st
Mem:   8252304k total,  8195552k used,    56752k free,    34356k buffers
Swap: 10354680k total,    74044k used, 10280636k free,  6624148k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 1948 xxxxxxxx  20   0 1624m 240m 4020 S 96.8  3.0 164:33.75 java
 1927 xxxxxxxx  20   0  139m  31m  27m R 91.8  0.4  38:34.55 postgres
 1929 xxxxxxxx  20   0 1624m 200m 3984 S 86.2  2.5 183:24.88 java
 1969 xxxxxxxx  20   0 1624m 292m 3984 S 65.6  3.6 154:06.76 java
 1987 xxxxxxxx  20   0  137m  29m  27m R 28.5  0.4  75:49.82 postgres
 1581 root      20   0  159m  18m 4712 S 22.5  0.2  52:42.54 Xorg
 2411 xxxxxxxx  20   0  309m 9748 4544 S 20.9  0.1  45:05.08 gnome-system-mo
 1947 xxxxxxxx  20   0  137m  28m  27m S 13.3  0.4  44:46.04 postgres
 1772 xxxxxxxx  20   0  135m  25m  25m S  4.0  0.3   1:09.14 postgres
 1966 xxxxxxxx  20   0  137m  29m  27m S  3.0  0.4  64:27.09 postgres
 1773 xxxxxxxx  20   0  135m  732  624 S  1.0  0.0   0:24.86 postgres
 2464 xxxxxxxx  20   0 15028 1156  744 R  0.7  0.0   0:49.14 top
  344 root      15  -5     0    0    0 S  0.3  0.0   0:02.26 kdmflush
    1 root      20   0  4124  620  524 S  0.0  0.0   0:00.88 init
    2 root      15  -5     0    0    0 S  0.0  0.0   0:00.00 kthreadd
    3 root      RT  -5     0    0    0 S  0.0  0.0   0:00.00 migration/0
    4 root      15  -5     0    0    0 S  0.0  0.0   0:00.04 ksoftirqd/0
java linux memory
  • 4 4 个回答
  • 4249 Views

4 个回答

  • Voted
  1. Best Answer
    Joshua Nurczyk
    2010-01-08T06:20:53+08:002010-01-08T06:20:53+08:00

    即使物理内存未满,内存管理器也会根据它认为最好的方式自动将内容放入交换中。您是否有理由根本不希望它进入交换?真的会影响程序的运行吗?

    您需要关闭交换才能测试有或没有交换的速度。

    另外,它什么时候使用交换?一直运行还是运行一段时间后?您还必须考虑到底层系统也需要内存。以及您正在使用的任何 IDE,以及正在运行的任何其他程序。因此,您可能需要交换比您意识到的更多。

    • 3
  2. SteveM
    2010-01-10T02:50:11+08:002010-01-10T02:50:11+08:00

    您系统上的整体内存消耗看起来不错。请记住从“已使用”部分中减去“缓存”和“缓冲区”以获得准确的可用内存量。高速缓存用于在 ram 中缓存文件,以备将来访问。如果 Linux 需要更多内存,它会简单地减少这个内存量,所以在确定内存利用率时一般不会考虑使用它。由于缓存池中有 6 GB,因此如有必要,有大量可用的 ram。

    各个过程看起来也很好。Res 列表示实际允许的额定内存大小,似乎接近指定的堆大小。virt 列仅表示进程可以寻址的 ram 数量,而不是在该点上分配的内存。

    • 3
  3. warren
    2010-01-08T06:15:37+08:002010-01-08T06:15:37+08:00

    您只使用了 70MB 的交换空间。

    操作系统的内存管理器可以把东西放在它认为最好的地方。如果您希望它避免使用交换空间,则需要将其关闭。

    有关. _ _swapoff

    • 2
  4. richj
    2010-02-20T13:32:06+08:002010-02-20T13:32:06+08:00

    如此少的内存分配给基本上唯一运行的东西,如何使用所有 8Gb 内存?

    这是 Linux 内存管理的设计方式。这是一种性能优化,它将原本为空(因此被浪费)的内存放入缓存数据中,否则这些数据可能需要从文件系统中再次读取。

    尽管这似乎是一种不整洁的工作方式,但它更快。一旦可以更好地使用,操作系统就可以有效地回收这些内存。

    • 2

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve