我目前在运行 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 …
如果我将 tmpfs 设置为 50%,然后我添加或删除 RAM,tmpfs 会自动调整其分区大小吗?
另外,如果我有多个 tmpfs,每个设置为 50%。多个 tmpfs 是否相互竞争相同的 50%?操作系统如何管理它?
我的 Debian 伸展系统有很多内存。目前,它在 SSD 上使用加密交换分区,但在正常情况下,我不希望内存不足导致使用它。
但是根据 Snakedoc 的评论,完全关闭交换是一个坏主意:
请注意,完全禁用交换永远不会“安全”。即使系统具有 96+ GB 的内存,运行至少 512MB 的交换也是一个很好的安全措施。如果某些东西运行异常并意外吃掉所有 ram,它会让您的系统有时间杀死不必要的进程......禁用交换的替代方法是内核恐慌。
所以我想我可能会保留一些内存,比如 0.5G 用于“RAM 磁盘”,并将其用作交换文件,将写入保存到 SSD。
我怎么做?出于某种原因,这是一个坏主意吗?
我使用的是 Ubuntu 20.04 服务器版。
我有 512GB 的 RAM,其中大约 130GB 通常用于机器上运行的进程。我还有两个 ramdisk (tmpfs) 都配置为 500GB。
当 tmpfs 磁盘扩展和收缩它们使用的 RAM 量时,取决于它们的满度,通常 ramdisk 使用很少,总共 200GB。
我在一个大约 1000GB 的快速 NVMe 驱动器上进行了交换。偶尔,RAM 的使用会在短时间内出现峰值,仅持续几秒钟。
在这些时刻,我如何告诉 Linux 它应该始终将 ram 提供给进程并为驱动器使用交换?
出于神秘的原因,我有时仍会双启动进入 Windows。
我的问题是我担心信息可能会泄漏,因为 Windows 可以访问 RAM 内存。(不过,Linux 分区已加密且未插入引导媒体)。
有没有办法设置(在最近的内核和基于 GNU/Linux 的系统中)让内核在关机时擦除内存的方法?
此外,由于 LUKS 起着重要作用,它是否会在关机时擦除其内存以避免泄漏和“冷启动攻击”?
我的电脑感觉真的很慢。根据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)
这种行为是否符合预期,如果是,内核需要这么多内存用于什么任务?
我的 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) 我将 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 的树莓派上我也遇到了同样的问题。
红宝石代码:
#!/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) 有谁知道如何about:memory从终端启动 Firefox 中的垃圾收集和内存减少(> 释放内存 > GC/CC/最小化内存使用)?这个浏览器使用了大量的 RAM,我发现点击“最小化内存使用”实际上可以减少大约 20-30% 的负载。不幸的是,这不会持续很长时间,但我的想法是创建一个 Bash 脚本和cron它。
我正在运行一些非常繁重的 python 程序。我已经运行这个脚本好几个星期了,但在过去的几天里,程序被以下消息杀死:
Killed
Run Code Online (Sandbox Code Playgroud)
我也尝试使用:
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 或终端),但它一直在发生。
眼镜:
跑步时 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)