linux下的内存查看(virt,res,shr,data的意义)

其实在认真阅读了这篇名为“计算内存使用”的文章之后,还是处于半迷糊状态。这位作者就说Linux下面没有特别好的显示内存占用的工具,虽然有top和free,但都说得不清楚,就跟巫毒教的魔术似的。 比如top这个工具,它会显示3种数据,作者分别解释如下:[table=95%]
[tr][td]以下是引用片段:
VIRT:virtual memory usage。Virtual这个词很神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, 事实上的。到底是虚的还是实的?让Google给Define之后,将就明白一点,就是这东西还是非物质的,但是有效果的,不发生在真实世界的,发生在软件世界的等等。这个内存使用就是一个应用占有的地址空间,只是要应用程序要求的,就全算在这里,而不管它真的用了没有。写程序怕出错,又不在乎占用的时候,多开点内存也是很正常的。
RES:resident memory usage。常驻内存。这个值就是该应用程序真的使用的内存,但还有两个小问题,一是有些东西可能放在交换盘上了(SWAP),二是有些内存可能是共享的。
SHR:shared memory。共享内存。就是说这一块内存空间有可能也被其他应用程序使用着;而Virt - Shr似乎就是这个程序所要求的并且没有共享的内存空间。
DATA:数据占用的内存。如果top没有显示,按f键可以显示出来。这一块是真正的该程序要求的数据空间,是真正在运行中要使用的。
[/td][/tr]
[/table]
所以DATA的含义比较确定,甚至可以用程序读取的数据量计算出来;SHR是一个潜在的可能会被共享的数字,如果只开一个程序,也没有别人共同使用它;VIRT里面的可能性更多,比如它可能计算了被许多X的库所共享的内存;RES应该是比较准确的,但不含有交换出去的空间;但基本可以说RES是程序当前使用的内存量。 这篇文章是转载的,保存下来,仅作参考。

巫毒教的魔术?故弄玄虚的,只不过是linux和windows的内存管理机制不同罢了。

liuxing,你对ubuntu开发比较了解,能不能贴一些入门级的开发资料分享给我们?
:7_144:

可以

比如C语言开发ubuntu软件的入门级教程,有些人可能只会C语言,想用C语言为主要语言开发ubuntu应用,
有些人会C++,那么就贴一些C++和Qt编程的教程。慢慢引导更多的初学者去接触ubuntu开发。
有些人会python(做网站时用到的),但是也想开发一些ubuntu软件,那么应该怎么办呢?比如就需要配置GTK,那么具体应该怎么做呢?(当然也可以百度,但是有的教程都很老了,如果代码错误了,配置都无法完成,那么就很难让发挥本来就很少的积极性,直接变得回头丧气。当然之前的苦肯定要吃,但是我觉得新手不能在刚入门的时候就吃苦,应该在比如阅读开发文档时,多看看开发文档,这样不仅提高积极性,也相应地提高效率,ubuntu:Open(对任何人都开发),Share(对任何人都分析), Free(对任何人都免费),这也就是让我们大家团结在一起,一起提高效率,这不就是Linux的目的吗?)
比如有人学xmpp开发,那么是不是直接安装个openfire就可以了,xmpp协议的学习,还有代码的实现。
比如我之前学过PHP,php毕竟是网站开发,和软件开发差别还是有个天壤之别的,所以即使我会C语言,我都不知道如何入门,在win下有人推荐我用VC++来写C程序,但是如果我第一次接触VC++的话,我应该新建一个工程还是Win32Application?在哪边写代码等等很简单的问题,对于一个新手来说都是难题,当然可以借助百度,但是如果有几行文字,几个截图就可以让新手入门的话,浪费很多时间在百度上,还不如多利用这些时间去看英文开发文档。
ubuntu 编译C程序,是不是下载好库文件build-essential?
直接用Gcc编译后就可以在ubuntu下运行了?
那么可能我心里有个很好的界面idea,那么软件的界面我应该怎么实现,Glade?
那么然后界面如何和后台代码编译在一起称为一个独立的软件,
然后如何编译成deb软件包。。。。。
这样慢慢来,让新人慢慢入门

其实这上面的问题对于你来说很简单,但是我记得我当初学习php,别人说直接插入html代码里面,简单的通俗地来说,也就是放到便签内的任意位置。如果我不知道的话,我可能直接放到标签内,同样也是html代码内,所以希望liuxing能抽时间(因为您比较忙),写一个简洁的入门,尤其是针对不同的语言(C,C++,Python等等常见的语言)。
有点长,不好意思:7_144:

谢谢关注,要写你说的那些入门,写的很好不容易呀。