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