我真的很喜欢 Unity,但大多数时候我不得不使用 gnome-shell,因为我只有 1.5 GB 的 RAM,而工作时我必须使用所有这些应用程序:fogger、firefox、compiz efects、empathy、gwibber 和一些 lens。我该怎么做才能在不牺牲 Unity 的诸多功能的情况下提高内存使用效率?
答案1
检查哪些进程占用了最多的内存。我使用顶部。我发现 compiz 存在内存泄漏,并且是除 Firefox(也存在内存泄漏)之外占用内存最多的浏览器。
当我进行以下操作时,可以获得最佳响应速度(1.6GHz Pentium M,2GB RAM):
- 重新启动 Firefox 以回收泄漏的内存
- 注销并重新登录,重新启动 compiz 并回收泄漏的内存
- 不要让机器休眠;由于需要将数据从磁盘复制回 RAM,因此从休眠状态唤醒的速度很慢
其他可以改善您的体验的方法是研究使用最多内存的程序的配置选项,然后选择使用较少内存的选项。
答案2
抱歉再次使用了新答案,但不知什么原因,“添加评论”按钮在我的 Firefox 中不起作用:-)
compiz 内存泄漏很明显。compiz 不知何故成了一个活死人。它有缺陷,除了内存泄漏之外,还有其他几个问题。Firefox:我不知道 Firefox 是否真的泄漏了很多内存,老实说,我怀疑它泄漏了很多内存。内存泄漏量非常大。顺便说一句,比较 Firefox 启动前和关闭后的内存情况,并没有说明任何事物关于释放的内存量。不仅 Firefox 会缓存其内存,Linux 内核也会缓存。大多数“丢失”的内存可能是 RAM 中的库,这些库未使用或被其他应用程序使用。内核决定何时释放这些内存。这与我在第一个回答中解释的想法相同:让它留在内存中以便可能重用,直到使用的内存被释放真的需要。这种策略有两个很大的优点:不需要 CPU 时间来“清除”内存。如果需要内存,内核可以立即释放该内存。如果应用程序想要重用代码,它已经存在了。无需从磁盘加载它,这将是最慢的可能性。没有人需要这个未释放的内存,如果需要它,内核几乎可以立即释放它。我还怀疑使用配置选项是否是个好主意,当你对该应用程序没有深入的了解和具体的理由时。例如,在 Firefox 中,减少内存现金将使它慢点例如,当您打开许多选项卡时,Firefox 可能会被迫在磁盘上缓存,而无法在 RAM 中缓存。另一个不玩配置选项的好理由是,程序员已经设置了该值。他是最了解自己代码的人,通常他会根据自己的经验和知识优化这个值,以获得几乎最佳的结果。通常降低缓存将减少应用程序的性能。如果应用程序确实消耗内存(而不是通常的几千字节),例如 compiz,那么重新启动确实可以在短时间内提高响应能力。
答案3
Firefox 或大多数其他应用程序泄漏大量内存的说法是错误的。这完全是对 Firefox 和 Linux 如何管理内存的误解。您会在系统内存中看到可用内存量似乎在减少,而 Firefox 的分配内存量在增加。但事实并非如此没有什么与内存泄漏有关。Firefox 会使用这些内存,并且不会再将其归还,因为加载的代码可能会在以后重新使用,而无需再次将其加载到内存中。但是,如果 Linux 或应用程序需要内存,而没有可用的内存,Firefox 或任何其他应用程序会立即将其保留的内存归还给系统。使用更多内存会使 Firefox 和所有其他应用程序快点如果这些应用程序能尽快归还这些内存,那么它们就会恢复正常。因此,通常不需要关闭程序并重新启动它们。你的记忆并没有丢失 ;-)
当然,每个大型应用程序都会因错误而泄漏一些内存。但通常泄漏的内存量非常小(大多是几 KB 而不是 MB)
抱歉 EliahKagan/jokerdino:我不太明白你想让我做什么。我是 AskUbuntu 的新手,英语不是我的母语 ;-)
是的,如果有一个工具可以显示实际使用了多少内存以及仅保留了多少内存,那将非常酷。但我认为这几乎是不可能的。可以获取信息,了解内核管理的可回收内存和不可回收内存。应用程序将内存标记为内核可回收或不可回收,或标记为“不允许”回收的内存(例如时间关键部分)。因此,如果需要,内核能够回收可回收内存。但事实的另一半是,每个大型应用程序通常都有自己的内存管理器来决定使用程序的哪些部分或仅保留哪部分内存以及需要从内核分配多少内存。
Firefox 有自己的内存管理器(例如,Firefox 在打开 about:memory 时会提供一些信息),LibreOffice 也有自己的内存管理器,所有大型应用程序也有。如果您想要获得完整的信息(不仅与内核管理的内存有关,还与应用程序管理的内存有关),您必须从应用程序中获取这些信息。我认为没有明显的可能性来获取这些信息,因为每个应用程序都使用自己的内存管理设计。您将处于需要了解和分析所有这些应用程序的所有不同代码的情况。我认为这几乎是不可能的。
EliahKagan/jokerdino:抱歉,我不明白你想让我做什么。我是 AskUbuntu 的新手,英语不是我的母语 ;-)