内存占用问题

时间:2010-06-21 14:06:06

标签: c++

我只是好奇我在unix中有一个大约9MB的二进制可执行文件。被认为是一个大的内存占用?客户端将调用它来生成一些值,然后将消息排队到其他地方。我只是好奇谁能想知道程序的内存占用时间是多少,然后必须提供类似静态库而不是可执行文件?

5 个答案:

答案 0 :(得分:5)

一切都是相对的。如果应用程序在具有8MB RAM的计算机上运行,​​则占用空间很大。如果应用程序在具有64GB RAM的计算机上运行,​​那么它并不大。再说一遍,如果大部分RAM被一些巨大的Oracle实例吞没(例如),即使在64GB的RAM机器上它也可能很大。

你还应该考虑到只有9MB的一部分实际上被加载到RAM中 - readelf或objdump实用程序可以向你显示多少。

答案 1 :(得分:1)

这一切都取决于你获得的9MB的价值。例如,如果文件添加了几个数字,那么肯定太大。然而,如果服务器可以轻松拥有超过8GB的内存,那么9MB并不是那么多。

为了比较刚开始,一些VM可以使用超过50MB的内存。

答案 2 :(得分:1)

早在1996年,我经常为顶级CAD / CAM供应商创建可执行文件(静态链接),这些供应商的规模通常在32到50MB之间,具体取决于平台。是的,当内存为每MB 40美元时,我们设法用我们的程序填满了一个系统。在1996年。鉴于此,我今天看到的所有软件都让我感到沮丧,因为该程序在启动时比大多数人在一整天都做得更多。 :-)

所以不,除非它是“helloworld.exe”,这些天9MB并不多。

答案 3 :(得分:1)

听起来很正常。通过静态链接到各种库,或通过启用调试符号,可以快速达到9MB。

答案 4 :(得分:0)

我有1.5TB的硬盘空间。我可以在磁盘上放入174762个二进制文件。

至于ram,也许如果那个二进制文件中有9MB的代码(我非常怀疑),那么也许它将全部保存在ram中。

否则,可执行加载器可能只加载它需要的部分,如果有一些资源或二进制的未映射部分,则它们不需要在整个运行时保留在ram中。在任何情况下,你可能至少有1-4GB的ram,所以它显然不是问题......