Questions tagged «memory»

在计算中,内存是指计算系统的状态信息,因为它在某些物理结构中保持活动状态。

2
什么是“自动堆栈扩展”?
getrlimit(2)在手册页中具有以下定义: RLIMIT_AS 进程的虚拟内存的最大大小(地址空间),以字节为单位。此限制影响对brk(2),mmap(2)和mremap(2)的调用,这些调用在超出此限制时会失败,并显示错误ENOMEM。同样,自动堆栈扩展将失败(如果没有通过sigaltstack(2)提供备用堆栈,则会生成SIGSEGV来终止该进程)。由于该值很长,因此在32位长的机器上,此限制最多为2 GiB,或者此资源是无限的。 这里的“自动堆栈扩展”是什么意思?Linux / UNIX环境中的堆栈是否根据需要增长?如果是,确切的机制是什么?
13 linux  process  memory  limit 

2
30%的RAM是“缓冲区”。它是什么?
$ free -h total used free shared buff/cache available Mem: 501M 146M 19M 9.7M 335M 331M Swap: 1.0G 85M 938M $ free -w -h total used free shared buffers cache available Mem: 501M 146M 19M 9.7M 155M 180M 331M Swap: 1.0G 85M 938M 如何在输出中描述或解释“缓冲区” free? 我对该系统没有任何(已知)问题。我只是感到惊讶和奇怪,看到“缓冲区”几乎与“缓存”一样高(155M与180M)。我认为“缓存”代表文件内容的页面缓存,并且往往是“缓存/缓冲区”的最重要部分。我不太清楚什么是“缓冲区”。 例如,我将其与具有更多RAM的笔记本电脑进行了比较。在我的笔记本电脑上,“缓冲区”数字比“缓存”(200M与4G)小一个数量级。如果我对什么是“缓冲区”有一个正确的了解,那么我可以开始问为什么在较小的系统上缓冲区可能会增长到如此大的比例。 man proc (我忽略了“大”的荒谬定义): …
13 linux  memory  cache 


3
x86 Linux中的物理地址0包含什么?
我不确定这个问题应该在这里还是在reverseengineering.stackexchange.com中 引用维基百科: 在8086处理器中,中断表称为IVT(中断向量表)。IVT始终位于内存中的同一位置,范围从0x0000到0x03ff,并且由256个四字节实模式远指针(256×4 = 1024字节内存)组成。 这是我在qemu monitor中找到的: (qemu) xp/128xw 0 0000000000000000: 0xf000ff53 0xf000ff53 0xf000e2c3 0xf000ff53 0000000000000010: 0xf000ff53 0xf000ff53 0xf000ff53 0xf000ff53 0000000000000020: 0xf000fea5 0xf000e987 0xf000d62c 0xf000d62c 0000000000000030: 0xf000d62c 0xf000d62c 0xf000ef57 0xf000d62c 0000000000000040: 0xc0005526 0xf000f84d 0xf000f841 0xf000e3fe 0000000000000050: 0xf000e739 0xf000f859 0xf000e82e 0xf000efd2 0000000000000060: 0xf000d648 0xf000e6f2 0xf000fe6e 0xf000ff53 0000000000000070: 0xf000ff53 0xf000ff53 0xf0006aa4 0xc0008930 …
12 memory  x86 

3
进程分叉时会复制其虚拟内存或常驻内存吗?
在Linux中制作新进程的标准方法是复制父进程的内存占用空间,并成为子进程的环境,直到execv被调用为止。 我们在谈论什么内存占用量,虚拟的(所需的过程)还是常驻的(实际使用的)? 动机:我的设备的交换空间有限,而应用程序在虚拟内存和驻留内存之间的差异却很大。由于内存不足,该应用程序无法派生,并希望查看尝试减小虚拟足迹大小是否有帮助。

1
pmap输出的含义
我main.c在Linux中写道: int main() { while (1){} } 当我编译并启动它时,我可以pmap: # pmap 28578 28578: ./a.out 0000000000400000 4K r-x-- /root/a.out 0000000000600000 4K r---- /root/a.out 0000000000601000 4K rw--- /root/a.out 00007f87c16c2000 1524K r-x-- /lib/libc-2.11.1.so 00007f87c183f000 2044K ----- /lib/libc-2.11.1.so 00007f87c1a3e000 16K r---- /lib/libc-2.11.1.so 00007f87c1a42000 4K rw--- /lib/libc-2.11.1.so 00007f87c1a43000 20K rw--- [ anon ] 00007f87c1a48000 128K r-x-- …

3
探索RAM内容
我正在使用Redis数据库,并想探索应用程序正在使用的RAM的内容。 我觉得为什么要这样做的解释比我要问的问题更有意义。 Redis是一个简单的键值存储,用于存储二进制数据。我认为这是探索诸如编码之类的好地方,并且对我来说很有趣,例如在RAM上浏览以查找二进制数据集,在进行诸如查找简单模式之类的事情;也许探索编写在RAM中搜索的婴儿查询语言的想法。 阅读SICP中有关查询语言的章节后,我就有了这个想法。 关于从哪里开始有什么想法?最初,我想向系统询问“请给我运行该应用程序的地址空间”。
12 linux  memory 

1
如何观察内存带宽?
我有一个嵌入式Linux ARM系统,该系统显示出的吞吐量明显低于以太网和USB上的预期。我怀疑内存可能有所贡献。有没有办法观察在以太网或USB上进行吞吐量测试时消耗的内存带宽?

1
许多Gnome 3.28守护程序正在使用超过100 GB的VIRT。为什么?
我最近将此笔记本电脑更新为Fedora 28 Beta及其Gnome 3.28。事情大多都很好。 但是有些事情很奇怪。这不会引起问题,因为这都是虚拟内存。 但是,为什么这些守护程序分配100+ GB的虚拟内存? 0 1000 2012 1719 20 0 101649024 32904 SyS_po Sl ? 0:00 /usr/libexec/goa-daemon 0 1000 1983 1719 20 0 101704260 46416 SyS_po Sl ? 0:00 /usr/libexec/gnome-shell-calendar-server 0 1000 2210 1765 20 0 101736292 33656 SyS_po Sl+ tty2 0:00 /usr/libexec/deja-dup/deja-dup-monitor 0 1000 2452 1719 …

2
如何获得各个发行版之间可移植的可用内存量?
报告内存的标准文件/工具在不同的Linux发行版上似乎具有不同的格式。例如,在Arch和Ubuntu上。 拱 $ free total used free shared buff/cache available Mem: 8169312 3870392 2648348 97884 1650572 4110336 Swap: 16777212 389588 16387624 $ head /proc/meminfo MemTotal: 8169312 kB MemFree: 2625668 kB MemAvailable: 4088520 kB Buffers: 239688 kB Cached: 1224520 kB SwapCached: 17452 kB Active: 4074548 kB Inactive: 1035716 kB Active(anon): 3247948 …
12 linux  memory  meminfo 

2
当我肯定有4.0 GiB时,为什么我的系统仅显示3.2 GiB的RAM
我安装了2x2 GiB记忆棒。从grub引导菜单 运行memtest86可以确认这一点。.memtest86没有报告错误。 但是,在运行Ubuntu 10.04的系统中,每检查一次我的可用内存,它只会报告大约3.2 GiB。 cat /proc/meminfo == 3320132 kB System Monitor == 3.2 GiB htop == 3242 MB free -m == 3242 MB 谁得到了我缺少的 RAM? 更新的信息:我现在在相同的硬件上双重引导到Ubuntu 10.04的另一个版本(我忘记了我几个月前安装的版本,以备不时之需):)....它通过以下System Monitor方式报告3.9 GiB : 我已经/var/log/messages在http://pastebin.ubuntu.com/629246/发布了我的最新信息。
12 linux  memory  x86  pae 

1
'ulimit -m'在现代Linux上不起作用吗?
本文声称该-m标志ulimit在现代Linux中不起作用。我没有其他证据可以证实这一说法。准确吗? 您可以尝试通过设置最大常驻集大小(ulimit -m)来限制进程的内存使用量。这对Linux没有影响。man setrlimit表示它过去仅在古代版本中有效。您应该限制虚拟内存的最大数量(ulimit -v)。 如果确实可以在旧版本的Linux中运行,那么哪个版本停止支持此功能?


1
free命令中的共享内存是什么意思?
输出的第四列free称为shared。在互联网上可以看到的大多数输出​​中,共享内存为零。但这不是我的计算机上的情况: $ free -h total used free shared buff/cache available Mem: 7,7G 3,8G 1,1G 611M 2,8G 3,0G Swap: 3,8G 0B 3,8G 这也是以下内容的摘录ps_mem.py: Private + Shared = RAM used Program --------------------------------- 21.4 MiB + 1.0 MiB = 22.4 MiB bash (9) 29.2 MiB + 5.3 MiB = 34.5 MiB Xorg 35.9 …
12 linux  memory  ram 

2
awk内存泄漏?
基于此,我正在运行命令 < /dev/urandom hexdump -v -e '/1 "%u\n"' | awk '{ split("0,2,4,5,7,9,11,12",a,","); for (i = 0; i < 1; i+= 0.0001) printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }' | xxd -r -p | sox -traw -r44100 -b16 -e unsigned-integer - -tcoreaudio 我注意到在运行此命令时,awk使用的内存不断增长,例如,在播放75MB原始音频数据时,消耗了500MB以上的内存。流水线中的所有其他命令都维护恒定数量的内存。 使用此内存的awk有什么用,是否有替代方法可以仅使用恒定数量的内存来进行预期的流处理? 如果awk版本很重要: ⑆ awk --version awk version 20070501 这是我根据Thomas Dickey的答案测试的命令: …
11 awk  osx  memory 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.