8

Can anyone elaborate or provide a link to android memory management. I am confused about Android virtual memory scheme. How is paging done in Android? Without a hard disk, how do they do it? Do they have caching?

4

2 回答 2

4

这里有一些关于 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

于 2011-04-13T19:50:43.250 回答
1

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

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

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

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

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

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

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

更不用说大多数机器人都拥有比 CPU 快 100 倍的并行处理器 (GPU),同样只是闲置。除了少数知道如何启动它们的游戏玩家。

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

于 2015-07-13T19:46:32.723 回答