相关疑难解决方法(0)

Linux上的虚拟内存大小

我试图深入理解OS Linux上的虚拟内存管理.

我真的不明白操作系统如何确定进程的VM大小.

我知道32位x86操作系统可以提供高达3 GB的vm地址空间......它总是如此吗?

在我的情况下,我有大约110 MB物理内存和32位Linux,我的主进程有一个约660 MB的虚拟机地址空间.但是,物理内存中只有50 MB(我的进程的RSS),因此我的物理内存不足.其余的是免费的,几乎整个页面缓存使用.这似乎是一种正常行为.

如果我检查/ proc/my_process_PID/smap,则有几个8 MB的匿名VMA.

我实际的问题是,我需要在代码中的其它附加10 MB的malloc,但不幸的是OOM杀手杀死我的过程(外的内存)......我想有对在VM没有更多的免费可用的页面堆,不是吗?某处是否存在巨大的内存泄漏?

为什么操作系统不会扩展我的进程vm大小呢?

有关信息,vm大小是无限的:ulimit -v:无限制

c linux memory

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

标签 统计

c ×1

linux ×1

memory ×1