【问题标题】:Android virtual memory and paging [closed]Android虚拟内存和分页[关闭]
【发布时间】:2011-04-13 19:09:37
【问题描述】:

谁能详细说明或提供android内存管理的链接。我对 Android 虚拟内存方案感到困惑。 Android 中的分页是如何进行的?没有硬盘,他们怎么办?他们有缓存吗?

【问题讨论】:

  • 具有库存 ROM 的常规 Android 设备没有 SWAP 文件或分区。只有一些自定义 rom 有/允许/需要它们。如果 Android 内存不足,它会停止并销毁未使用的应用程序。

标签: android paging virtual-memory


【解决方案1】:

这里有一些关于 android 内存管理的链接

详细的帖子 http://mobworld.wordpress.com/2010/07/05/memory-management-in-android/

还有一篇关于内存分析的不错的博客文章 http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html

如何避免内存泄漏 http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

【讨论】:

  • 感谢您的回复。但这是应用程序级别的视图。我想了解更多关于内核级别的信息。分页是如何进行的?在没有硬盘的情况下如何换出页面。我对它是如何完成的有一个大致的了解。但想更深入地了解。
  • 由于 Android 使用 linux 内核,我假设适用于适当内核版本的 linux 信息将适用。应用程序的细节同样重要,因为您必须记住,您的应用程序将在 Java 虚拟机(Dalvik 的虚拟机)中执行,它有自己的特殊性,并且以与 Android-linux 操作系统相对隔离的方式工作
【解决方案2】:

linux 内核和 jvm 应该被视为苹果和橘子。混淆这两者可能是灾难性的。

例如,linux内核的虚拟内存本质上是一个交换文件,并没有对单个进程的大小进行限制,导致文件满时“抖动”或无休止的交换。

与此形成鲜明对比的是,jvm(它只是另一个 linux 进程)为其应用程序设置了一个通用的最大大小(例如 256MB)。 Android 应用程序通常在它们自己的 jvm 中运行,从而防止任何给定的 jvm “抖动”。而是 GC 会抛出 OOM 并退出。

当内核虚拟内存耗尽时,Android 将进一步终止应用程序(jvm 包含作为活动线程组的任务),并在需要时稍后重新启动它们。它仍然可以冻结(颠簸),但不像例如那样频繁。无人值守的 linux 数据库或 Web 服务器。

抖动(冻结)android 的解决方案与抖动 linux 服务器完全相同。弹跳(循环电源)。因为它是一个linux服务器。

考虑到 Android 已经为世界提供了数以百万计的完全连接但大多是空闲的普遍 linux 服务器,这些服务器可以托管无穷无尽的多线程进程群(jvm 只是一种类型),这有点深刻。

它拥有终极超级计算机的骨架,即使是最精密的数据中心也相形见绌。

这更不用说大多数机器人拥有比其 CPU 快 100 倍的并行处理器 (GPU),同样只是闲置。除了少数知道如何激发他们的玩家。

只是作为一个概述,这个线程上已经有很好的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2015-09-01
    • 2013-01-12
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多