标签: ram

即使有足够的 RAM,Java“无法为对象堆保留足够的空间”

我目前在运行 Java 时遇到了一些问题。由于堆问题,它不会启动。但是我有超过 9 GB 的可用内存(如果您认为缓存是空的,甚至是 16 GB)。这是我得到的错误(和free命令)

root@server: ~ # java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

root@server: ~ # free
             total       used       free     shared    buffers     cached
Mem:      25165824   15941148    9224676          0          0    7082176
-/+ buffers/cache:    8858972   16306852
Swap:            0          0          0
Run Code Online (Sandbox Code Playgroud)

我在虚拟化服务器上​​运行 64 位 Debian。虚拟化软件是 OpenVZ。这是我的 Java 版本(我可以在停止两个 VM(当前正在运行的 4 …

debian java ram

8
推荐指数
2
解决办法
6万
查看次数

tmpfs 是否会在 RAM 数量发生变化时自动调整大小,并且在存在多个 tmpfs 时是否会竞争?

如果我将 tmpfs 设置为 50%,然后我添加或删除 RAM,tmpfs 会自动调整其分区大小吗?

另外,如果我有多个 tmpfs,每个设置为 50%。多个 tmpfs 是否相互竞争相同的 50%?操作系统如何管理它?

linux tmpfs ram

8
推荐指数
1
解决办法
2705
查看次数

RAM 替代 SSD 上的交换分区或交换文件

我的 Debian 伸展系统有很多内存。目前,它在 SSD 上使用加密交换分区,但在正常情况下,我不希望内存不足导致使用它。

但是根据 Snakedoc 的评论,完全关闭交换是一个坏主意:

请注意,完全禁用交换永远不会“安全”。即使系统具有 96+ GB 的内存,运行至少 512MB 的交换也是一个很好的安全措施。如果某些东西运行异常并意外吃掉所有 ram,它会让您的系统有时间杀死不必要的进程......禁用交换的替代方法是内核恐慌。

如何安全地永久关闭交换并回收空间?(在 Debian Jessie 上)

所以我想我可能会保留一些内存,比如 0.5G 用于“RAM 磁盘”,并将其用作交换文件,将写入保存到 SSD。

我怎么做?出于某种原因,这是一个坏主意吗?

swap ram ramdisk

8
推荐指数
1
解决办法
4425
查看次数

告诉 Linux 用什么交换

我使用的是 Ubuntu 20.04 服务器版。

我有 512GB 的 RAM,其中大约 130GB 通常用于机器上运行的进程。我还有两个 ramdisk (tmpfs) 都配置为 500GB。

当 tmpfs 磁盘扩展和收缩它们使用的 RAM 量时,取决于它们的满度,通常 ramdisk 使用很少,总共 200GB。

我在一个大约 1000GB 的快速 NVMe 驱动器上进行了交换。偶尔,RAM 的使用会在短时间内出现峰值,仅持续几秒钟。

在这些时刻,我如何告诉 Linux 它应该始终将 ram 提供给进程并为驱动器使用交换?

ubuntu mount swap ram

8
推荐指数
1
解决办法
342
查看次数

如何在关机时让 Linux 擦除/随机化/清理 RAM?

出于神秘的原因,我有时仍会双启动进入 Windows。

我的问题是我担心信息可能会泄漏,因为 Windows 可以访问 RAM 内存。(不过,Linux 分区已加密且未插入引导媒体)。

有没有办法设置(在最近的内核和基于 GNU/Linux 的系统中)让内核在关机时擦除内存的方法?

此外,由于 LUKS 起着重要作用,它是否会在关机时擦除其内存以避免泄漏和“冷启动攻击”?

security luks ram reboot safety

7
推荐指数
1
解决办法
3139
查看次数

除了缓存,Linux 内核还使用大量内存做什么?

我的电脑感觉真的很慢。根据free,我只剩下大约 200M 的 RAM,并且必须换出超过 1GB 的内存。我知道如果内存用于缓存是好的,但这看起来我的内存真的很低。

root@desktop:/proc free -h
               total       used        free      shared  buff/cache   available
Mem:           3.9G        3.4G        132M         44M        378M        213M
Swap:          8.0G        1.2G        6.7G
Run Code Online (Sandbox Code Playgroud)

smem -tk报告说应用程序最多使用 2GiB(RSS 列)。smem -wk占所有使用的内存。显然内核使用 1.8GiB 不是为了缓存:

root@desktop:/proc smem -wk
Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory          1.9G      74.3M       1.8G 
userspace memory               1.8G     250.9M       1.6G 
free memory                  173.9M     173.9M          0 
Run Code Online (Sandbox Code Playgroud)

这种行为是否符合预期,如果是,内核需要这么多内存用于什么任务?

performance linux-kernel ram

7
推荐指数
1
解决办法
464
查看次数

我怎样才能找出是什么让我的 SLAB 不可回收内存无限增长

我的 SLAB 不可回收内存 (SUnreclaim) 无限增长,这似乎是我的系统最终耗尽 RAM 并开始尝试交换直到死机的原因。这是我几天的 SUreclaim 的图表。我的典型 RAM 使用量在 16GB 服务器上约为 5GB。当 SUreclaim 达到大约 10.xGB 时,无休止的交换开始。

这些图表显示它无休止地增长,在这两种情况下,我重新启动它以释放 RAM,然后它会导致我的系统自行交换死亡。

在此处输入图片说明

这是第二次重新启动之前的部分平板电脑。

---------------------------------- 20180730164416 ----------------------------------
 Active / Total Objects (% used)    : 34014938 / 35150125 (96.8%)
 Active / Total Slabs (% used)      : 1098114 / 1098114 (100.0%)
 Active / Total Caches (% used)     : 120 / 147 (81.6%)
 Active / Total Size (% used)       : 7332279.93K / 7831039.90K (93.6%)
 Minimum / Average / Maximum Object : 0.01K / 0.22K / 22.88K …
Run Code Online (Sandbox Code Playgroud)

linux cache ram

7
推荐指数
1
解决办法
1052
查看次数

为什么我的系统在使用一小时后会使用更多 RAM?

我将 Arch Linux (5.1.8-arch1-1-ARCH) 与 XFCE DE 和 XFWM4 WM 一起使用。事情非常优雅,RAM 和 CPU 使用率很低。

启动后,当 DE 完全加载时,我看到 665 MiB 的 RAM 使用量。

但是打开 Atom、Code、Firefox、Chromium 等应用程序后,或在 GIMP、Blender 等中工作后,RAM 使用量增加,这是显而易见的。但是在关闭所有应用程序并只剩下一个 gnome-system-monitor 之后,我可以看到 RAM 使用量为 1.2 - 1.4 GiB。/proc/meminfo 与 gnome-system-monitor 一致,但 htop 始终给出不同的结果。

更糟糕的是,当我稍后打开一个占用 RAM 的应用程序时,它再次消耗 1.4 GiB 所需的内存。情况总是如此。/tmp/ 目录中不会存储任何可能增加到兆字节的文件。

另外,如果我查找使用那么多 RAM 的进程(从开始时的 700 MiB 到关闭浏览器后的 1.4 GiB !!),我什么也看不到。事实上,即使在运行 Arch ARM 的树莓派上我也遇到了同样的问题。

这是截图 1 这是截图2

红宝石代码:

#!/usr/bin/ruby -w
STDOUT.sync = true

loop do
    IO.readlines(File.join(%w(/ proc meminfo))).then { |x| [x[0], x[2]] }.map { |x| x.split[1].to_i }.reduce(:-) …
Run Code Online (Sandbox Code Playgroud)

performance ram

7
推荐指数
1
解决办法
7644
查看次数

如何从终端触发 Firefox 内存清理?

有谁知道如何about:memory从终端启动 Firefox 中的垃圾收集和内存减少(> 释放内存 > GC/CC/最小化内存使用)?这个浏览器使用了大量的 RAM,我发现点击“最小化内存使用”实际上可以减少大约 20-30% 的负载。不幸的是,这不会持续很长时间,但我的想法是创建一个 Bash 脚本和cron它。

memory-leaks memory terminal firefox ram

7
推荐指数
1
解决办法
1608
查看次数

Python 程序突然被杀死

我正在运行一些非常繁重的 python 程序。我已经运行这个脚本好几个星期了,但在过去的几天里,程序被以下消息杀死:

Killed
Run Code Online (Sandbox Code Playgroud)

我尝试创建一个8 GB的新交换文件,但它一直在发生。

我也尝试使用:

dmesg -T| grep -E -i -B100 'killed process'
Run Code Online (Sandbox Code Playgroud)

其中列出了错误:

[Sat Oct 17 02:08:41 2020] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/user.slice/user-1000.slice/user@1000.service,task=python,pid=56849,uid=1000
[Sat Oct 17 02:08:41 2020] Out of memory: Killed process 56849 (python) total-vm:21719376kB, anon-rss:14311012kB, file-rss:0kB, shmem-rss:4kB, UID:1000 pgtables:40572kB oom_score_adj:0

Run Code Online (Sandbox Code Playgroud)

我有一台强大的机器,我尝试在运行时也没有运行其他任何东西(Pycharm 或终端),但它一直在发生。

眼镜:

  • Ubuntu 20.04 LTS(64 位)
  • 15.4 GiB 内存
  • 英特尔酷睿 i7-105100 CPU @ 1.80 GHz x 8

跑步时 free -h t

             total        used        free      shared  buff/cache   available
Mem:           15Gi       2.4Gi        10Gi       313Mi       2.0Gi        12Gi …
Run Code Online (Sandbox Code Playgroud)

memory-leaks python ram out-of-memory

7
推荐指数
2
解决办法
7461
查看次数