什么是 RSS

本文介绍了RSS技术的背景,它最初由Netscape定义,后经发展分化为RSS 0.9x/2.0和RSS 1.0两个阵营。还提到RSS是Blog走向社区化的技术推动力,能用于新闻聚合。文中推荐了Aggie、NetNewsWire、Straw、NewzCrawler等新闻聚合工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是 RSS :
RSS 系列介绍(一):RSS的一些背景资料

讨 论与Blog相关的技术,不可不谈的就是RSS,这个缩写在英文中可以有几个源头,并被不同的技术团体做不同的解释。既可以是“Rich Site Summary”,或“RDF Site Summary”,也可以是“Really Simple Syndication”。为什么有这么多含义呢?这还要从RSS的一段今天也没有理清的关系说起。

今天肯定有人还记得IE 4刚刚推出来的时候有一个有趣的功能,那就是新闻频道。这个新闻频道的功能与Netscape推出的新闻频道是很相似的(当时Netscape还是市场上 领先的浏览器)。为此Netscape 定义了一套描述新闻频道的语言,这就是RSS,只不过Netscape自当时起每况愈下,所以最终也没有发布一个正式的RSS规范(只发布了一个0.9版 本)。而微软也在当时推出了支持自己IE的CDF(Channel Definition format)数据规格,与RSS非常接近。微软试图用新闻频道的功能把“推”(Push)技术变成一个应用主流,并与Netscape抗衡。不过出乎预 测的是,“推”技术自始至终没有找到合适的商业模型,而且伴随着其他各类网络特性的出现,也日益无法显 现自身的优势。新闻频道在浏览器中的地位最终日暮西山,最后也在IE的后续版本中消失了。

新闻频道的确进入了低谷,但是RSS并没有 被业界人士所抛弃。过去两年,Blog从一个专业群体开始,逐步成为了网络上最热门的新话题。而RSS成为了描述Blog主题和更新信息的最基本方法。于 是RSS这项技术被著名Blogger/Geek戴夫·温那(Dave Winner)的公司UserLand所接手,继续开发新的版本,以适应新的网络应用需要。新的网络应用就是Blog,因为戴夫·温那的努力,RSS升级 到了0.91版,然后达到了0.92版,随后在各种Blog工具中得到了应用,并被众多的专业新闻站点 所支持。在广泛的应用过程中,众多的专业人士认识到需要组织起来,把RSS发展成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的语义 网技术RDF对RSS进行了重新定义,发布了RSS 1.0,并把RSS定义为“RDF Site Summary”。这项工作并没有与戴夫·温那进行有效的沟通,而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本,也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营,也由此引起了在专业人群中的广泛争论。

因 为争论的存在,一直到今天,RSS 1.0还没有成为标准化组织的真正标准。而戴夫·温那却在2002年9月独自把RSS升级到了2.0版本,其中的定义完全是全新的模式,并没有任何RSS 1.0的影子。这引发了网络上进一步争议,究竟让一个越来越普及的数据格式成为一个开放的标准,还是被一家公司所定义和控制,成为了争议的焦点。戴夫·温 那并没有为自己辩解,他的观点是RSS还需要进一步发展,需要专业人士更明确的定义,不过恐怕这种轻描 淡写不能消除人们对RSS“被一家商业公司独占”的担心。

前面的铺垫对用户来说也许没有什么太大的意义,可能更多人关心如何在自己的Blog增加RSS输出,这样可以让很多新闻聚合工具(例如CNBlog刚刚推荐的NewzCrawler)很容易找到你并自动获得你在Blog中的更新内容。

所 以我们会在后面的系列文章中逐步增加对RSS工具的介绍,以及如何在你的Blog中添加RSS输出格式和相关的标志链接。等不及的用户,可以先到我的个人 站点上的一个临时链接地方尝试起来了,我提供了一个简单的RSS生成工具和相关的介绍(对Blogg er.com工具最佳,其他工具还没有做测试)。

P.S. goghs 的一个留言,供大家参考,普通用户大可以跳过: “关于RSS两个标准之争前段时间确实很激烈,很多局内人士被迫翻出了陈年老帐。有些争论甚至到了攻击的地步。跑开情感因素不论,作为一个完全的局外人, 我个人是比较偏向于0.9x/2.0 (具体就是0.91 -> 0.92 -> 0.94 -> 2.0)的。1.0将rdf的命名空间重新加入了RSS,这有它的意义。但是从RSS使用的领域,至少是现在的使用目的而言,1.0标准显得过重了。相比 之下2.0更简单更实用一点。 至于说一家公司控制标准的问题,其实从一开始RSS就处在这种状况之下,如果你认为它是被控制的话,从一开始就被控制了,即使在Netscape的年代。 作为一个开放标准,这种控制并未对用户形成什么危险。 其实1.0背后也是一家公司,知名的O'Reilly。 从既有资源而言,0.9x系列占有压倒优势,我想2.0会作为当然的既得利益者,继续占有统治位置。

但是对于一个开发者来说,可能这 种争论更容易被调和,因为你可以同时支持他们,甚至包括以前所有的标准。 这涉及两个方面: 1. source: 你可以生成两个版本,分别符合1.0和2.0规范。 或者你可以生成一个XML源,然后使用XSL/XSLT转换成1.0/2.0格式。 2. aggregator: 对不同的格式分别使用不同的解析。

当然,我希望最终还是能够互相妥协,只保留一个标准。不过这也许很难,因为这在计算机领域是最不常见的一件事。不管是公司之间,还是业余开发之间,都不容易达到一致。”

Isaac: goghs的留言很好,算是对这场标准的争论的一个补充吧。大家可能会奇怪,这种争论会不会对Blog的发展产生不利的影响。照我说,不一定,很可能是促 进作用更多一些。不像最近国内的某些争吵,吵来吵去其实伤害了发展和进步。另外,从技术开发上来说,我 也非常支持0.92系列的简易性,把新浪新闻变成RSS 0.92并导入NewzCrawler 就是一个10分钟的工作,而RDF相对麻烦一点,当然也不过是处理一些额外的命名空间而已。但是从整体来说,Sementic Web(语义网)也需要大家的通力支持才能够有更好的未来,而作为承载语义网的一个重要部分,RDF应当被有责任感的人们所推动。不过我还是要承认RDF 应用到RSS中还为时过早。


RSS 系列介绍(二)


--------------------------------------------------------------------------------
RSS与新闻聚合前面介绍了RSS的一些历史渊源,今天我再与大家聊聊RSS在新闻聚合,而下一次我还会介绍RSS在网站联合中的应用。

其 实,RSS就是一段规范的XML数据,用一些大家约定的标记描述一个Blog或者一个新闻源的最近更新的内容。RSS是Blog走向社区化和快速普及的一 个技术推动力,Blog也因此技术而走向了专业化领域。连同本来网络上的各种专业媒体提供的新闻源, 人们可以透过RSS在桌面上轻松访问大量与自己的兴趣相关的主题,而忽略掉访问网站带来的复杂过程,还有那些讨厌的花花绿绿的广告。新闻聚合(News Aggregation)和网站联合(Syndication)两个概念由此出现并广泛被Blogger们所采用。我们今天先谈谈新闻聚合。


所 谓新闻聚合,就是通过软件工具或编程的方法从多个新闻源或Blog站点搜集新闻并在一个界面中提供给读者进行阅读。新闻聚合的基础条件就是这些新闻源都提 供通用的数据格式,目前最流行的格式也就是RSS。也不知道是有了RSS,才有了新闻聚合的概念,还 是有了新闻聚合的想法,才出现了RSS的技术,总之技术最终应当是为人们的需要服务。目前网络上有一些流行的新闻聚合工具,他们都支持多种目前处于版本的 RSS格式。我们在这里介绍几种比较流行的工具:


Aggie 是一个很小的新闻聚集工具,连同源代码下载也不过84K。唯一的限制是它建立在Microsoft .Net 框架上,所以运行起来还要这个平台的支持(.Net 框架的基本运行版本也要20M左右)。Aggie把用户登记的各种Blog或专业媒体新闻网站的信息都搜集在一起,并直接输出为一个本地网页,自动启动 IE提供给用户进行浏览。

NetNewsWire 则是一个运行于Apple公司电脑上的新闻搜集和阅读工具。它提供的三个板块的版面格式与电子邮件应用非常类似,它可以直接在应用程序的界面中浏览新闻。

Straw 也是一个高效率的桌面新闻聚合工具,不过运行在GNOME环境中,在Linux和支持GNOME的UNIX环境中都能够运行。


CNBlog 心得集近期曾经推荐过NewzCrawler这个新出现的新闻聚合工具,这是我在PC桌面上看到的最好的新闻聚合工具了。无论从功能还是易用性方面来看, 这个工具都比前面介绍的几个工具要更优秀。唯一的问题是,正式版本的NewzCrawler不是免费的 。现在我能够利用这个工具每天轻松地察看来自一些新闻站点(例如新浪和CNET等)的最新消息和一批我关心的Blog的更新内容,还能够便捷地用工具中内 嵌的Blog输入工具把感兴趣的内容摘录到自己的Blog中,效率大增,真是令人产生了全球信息尽在指 尖的感受。当我们深入去想的时候,会发现这大概正是网络走向个性化和对传统媒体的一种挑战所在吧。

在新闻聚合的观念下,我相信Blog会与RSS共同发展,越来越成为人们最喜爱的信息来源。
<think>好的,用户现在问的是“什么是RSS内存?”,我需要详细解释这个概念。首先,我需要确定用户可能的背景,可能是在使用Linux系统进行开发或者运维,遇到了内存相关的问题,比如在之前的讨论中提到了hv::Buffer::enablePool的内存优化,其中提到了RSS内存的降低。因此,用户可能在性能优化过程中接触到RSS,需要进一步了解其含义和作用。 接下来,我需要回忆RSS的定义。RSS全称是Resident Set Size,即常驻内存集。它是进程实际占用物理内存的大小,包括使用的堆、栈和共享库中的内存部分。但要注意,RSS并不包括已经被换出到交换区的内存,也不包括尚未被使用的内存页。 然后,我需要对比其他内存指标,比如VSZ(虚拟内存大小),以便用户清楚区别。VSZ是进程可访问的虚拟内存总量,可能比RSS大很多,因为它包括未实际使用的内存和共享库的部分。同时,还可以提到/proc文件系统中的其他指标,比如PSS(Proportional Set Size)和USS(Unique Set Size),这些在分析内存时也很重要。 用户可能想知道RSS的实际应用场景,比如如何通过工具(如top、ps、htop、smem)查看RSS,以及如何解读这些数据。需要举例说明,比如在之前的例子中启用内存池后RSS从1.1G降到800M,说明内存使用效率提升。 此外,用户可能关心RSS的限制和潜在问题。比如RSS是否包含共享内存,可能高估实际使用的物理内存,特别是在多个进程共享库的情况下。这时候可以引入PSS的概念,解释其如何更准确地计算共享内存的部分。 还要考虑用户可能的误区,比如认为RSS高就一定不好,但实际上这取决于应用的具体情况。如果进程确实需要大量内存,高RSS是正常的。但如果RSS异常增长,可能存在内存泄漏的问题,需要进一步排查。 最后,总结RSS的重要性,帮助用户理解在性能优化、内存泄漏检测和资源监控中的作用。确保解释清晰,结构合理,使用用户能理解的语言,避免过于技术化的术语,但必要时给出术语的定义和示例。</think>### **RSS 内存详解**(Resident Set Size,常驻内存集) --- #### **一、核心定义** **RSS** 是进程**实际占用物理内存**的关键指标,表示当前时刻进程在物理内存中驻留的数据总量,包括: - 代码段(text) - 数据段(堆、栈) - 共享库中**已被加载到物理内存**的部分 - 内核数据结构(如页表) > $\text{注意}$:RSS **不包含** 已换出到交换区(swap)的内存,也不统计文件系统缓存(page cache)。 --- #### **二、与其他内存指标对比** | 指标名称 | 全称 | 描述 | 典型观测工具 | |---------|------|-----|------------| | **VSZ** | Virtual Memory Size | 进程可访问的**虚拟内存总量**(含未使用的预留内存) | `top`, `ps` | | **PSS** | Proportional Set Size | 按比例计算的共享内存(更精确的物理内存统计) | `smem` | | **USS** | Unique Set Size | 进程独占的物理内存(不含共享库) | `smem` | --- #### **三、技术特征** 1. **物理内存映射** ```bash # 示例:进程内存布局 +-------------------+ | 代码段 (text) | → RSS +-------------------+ | 数据段 (heap) | → RSS +-------------------+ | 共享库已加载部分 | → RSS +-------------------+ | 未使用的预留内存 | → VSZ - RSS +-------------------+ ``` 2. **动态变化特性** - 程序申请堆内存时,RSS **可能延迟增长**(Linux采用惰性分配策略) - 内存释放后,RSS **不会立即减少**(释放的内存可能仍标记为可复用) --- #### **四、实际应用场景** 1. **性能优化分析** ```bash # 查看进程内存(示例) $ ps -eo pid,rss,comm | grep nginx 1234 10240 nginx 5678 20480 nginx # 子进程RSS总和可能超过主进程 ``` - 对比优化前后的 RSS 变化(如内存池启用后 RSS 下降 27%) 2. **内存泄漏检测** ```bash # 持续监控 RSS 增长 $ watch -n 1 'ps -p 1234 -o rss=' ``` - 若 RSS 持续增长且无合理原因 → 疑似内存泄漏 3. **容器资源限制** ```yaml # Kubernetes 内存限制配置 resources: limits: memory: "512Mi" # 实际限制的是 RSS + 部分内核内存 ``` --- #### **五、重要技术细节** 1. **共享内存影响** - 多个进程共享同一个动态库时,该库的 RSS 会被**重复统计** - 举例:10 个进程使用 `libc.so`,每个进程的 RSS 都包含该库的内存 2. **精确测量方法** ```bash # 使用 smem 工具获取 PSS(更准确) $ smem -P nginx PID User Command USS PSS RSS 1234 www-data nginx: worker 1.2M 2.1M 5.0M ``` 3. **Linux 底层实现** - 通过 `/proc/[pid]/statm` 文件获取原始数据 - 第二列为 RSS 页数(通常页大小为 4KB) ```bash $ cat /proc/1234/statm 125680 25430 ... # 25430 pages × 4KB = ~101MB RSS ``` --- #### **六、常见误区** 1. **误区**:RSS 高 = 程序有内存问题 **实际**:数据库缓存、科学计算程序等合理场景需要高 RSS 2. **误区**:RSS 包含所有物理内存使用 **现实**:不包括内核 slab 分配器管理的部分内存 3. **误区**:RSS 下降代表内存已释放 **真相**:Linux 可能将释放的内存保留在缓存中(可通过 `echo 3 > /proc/sys/vm/drop_caches` 强制回收) --- 通过理解 RSS 内存的特性,开发者可以更准确地评估程序真实内存消耗,这对性能调优、资源监控和云原生环境下的资源配置具有重要意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值