所以,标题描述了几乎所有必要的回答我。还有一件事:请回复默认安装 Python 的库,因为我正在开发的应用程序是 Ubuntu App Showdown 的一部分。
运行 Python 2.7、Ubuntu 12.04。
所以,标题描述了几乎所有必要的回答我。还有一件事:请回复默认安装 Python 的库,因为我正在开发的应用程序是 Ubuntu App Showdown 的一部分。
运行 Python 2.7、Ubuntu 12.04。
您要求的是一个几乎无法计算且价值很小的数字。
任何运行一段时间的 Linux 系统都几乎没有可用的“空闲”内存。只是 cat /proc/meminfo
-MemFree
条目通常只有几兆字节。
那么,那段记忆去哪儿了?
对于初学者,内核缓存所有磁盘访问。这通常在Cached
条目中可见。当您需要更多内存时,磁盘缓存将被修剪,因此您可以将该数字添加到MemFree
.
但是,如果应用程序malloc()
在恰好有 2 GB RAM 的系统上分配(用 C 语言)2 GB,通常只会被授予:您会得到一个有效的指针。但是,实际上并没有为您的应用程序保留任何 RAM - 只有当您的应用程序开始接触内存页面时才会发生这种情况 - 每个接触的页面都会被分配。您可以要求的最大尺寸为CommitLimit
.
但是应用程序代码本身也可能不在 RAM 中 - 二进制文件和库是 mmapp()ed,因此只有被触摸的页面才会加载到 RAM 中。
如果你运行一个工具top
,你会得到每个进程的各种内存信息,包括 VIRT、RES 和 SHR。
那么,知道有多少可用内存有什么价值呢?您可以启动一个可能需要比您的系统更多的 RAM 的应用程序,但它仍然运行......您甚至可以运行该应用程序两次或三次 - 代码页无论如何都是共享的......
注意:上述答案切入了很多角落,真正的机制要复杂得多。而且我什至还没有开始将交换空间带入故事中。但这对你有用,我希望......