【问题标题】:Why does dedicated memory to a process reduces on the server?为什么服务器上进程的专用内存会减少?
【发布时间】:2015-02-07 07:07:09
【问题描述】:

我在服务器上运行 java 代码。一开始,我查看了空闲内存,发现有超过 20GB 的内存是空闲的。然后我运行我的代码。它最初的 RAM 约为 9GB,但后来降至 2.7GB 左右。

我再次检查了可用内存,它仍然在 20GB 左右。但我不明白为什么服务器决定减少我的进程的专用内存。虽然还有一些其他用户在他们的进程中使用了大约 20GB 的 RAM,但我知道用户可以访问的内存量没有限制。

谁能解释为什么内存会减少?

如果您需要更多信息,我会说我在谈论物理内存 (RES)。专用于我的进程的虚拟内存始终为 32.8GB。 同时,我的代码运行需要很长时间。它已经运行了10多个小时。一个过程的持续时间是否有效? (我自己的答案是否定的,因为每当我使用top 命令检查内存分配时,我看到另一个用户正在使用 20GB 的 RAM,而且它永远不会改变!

【问题讨论】:

    标签: java memory memory-management process server


    【解决方案1】:

    我假设您在谈论 Unix / Linux,因为您使用的是 top

    最可能的原因是您的应用程序进入了一种执行模式,其中它正在使用的对象的工作集都在相对较少的内存页面中。如果您的应用程序不读取或写入其他页面,则虚拟内存系统将逐步刷新然后到磁盘(如果它们是脏的),然后将它们添加到空闲池中。据推测,这些页面随后被其他进程使用。

    【讨论】:

    • 非常感谢您的回答。是的,我正在使用 Linux。我完全理解你所说的,但我想知道如何加快我的程序。有什么办法吗?
    • 加速一个程序的正常方法是profile它找到性能热点,然后运用脑力找出如何让它们运行得更快,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多