Android 虚拟内存和分页

发布于 2024-11-01 10:55:01 字数 1539 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

享受孤独 2024-11-08 10:55:01

Linux内核和jvm应该被视为苹果和橘子。混淆两者可能会造成灾难性的后果。

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

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

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

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

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

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

更不用说大多数 Android 设备都拥有比 CPU 快 100 倍的并行处理器 (GPU),但同样处于闲置状态。除了少数知道如何激发它们的玩家之外。

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

The linux kernel and the jvm should be treated as apples and oranges. Confusing the two can be disastrous.

For example, the linux kernel's virtual memory is essentially a swap file, and does not set limits on individual process size, which results in "thrashing" or endless swapping when the file is full.

In stark contrast, the jvm (which is just another linux process) sets a common maximum size for its applications (eg 256MB). Android apps generally run in their own jvms, preventing any given jvm from "thrashing". Rather the GC will throw an OOM and exit.

Android will further kill off apps (jvms containing tasks that are groups of activity threads) when running out of kernel virtual memory, and restart them later if required. It can still freeze up (thrash), but not as often as, for eg. an unattended linux database or web server.

The solution for a thrashing (frozen) android is exactly the same as a thrashing linux server. Bounce (cycle the power). Because it is a linux server.

It is somewhat profound to consider that Android has given the world millions of fully connected yet mostly idle pervasive linux servers that can host endless swarms of multithreaded processes (jvms are only one type).

It has the bones of the ultimate super computer, dwarfing even the most elaborate data centre.

That is not even mentioning that most androids have parallel processors (GPUs) that are 100s of times faster than their CPUs, again just sitting idle. Except for a few gamers who know how to fire them up.

Just intended as an overview, there are already excellent links on this thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文