什么是Jetsam,它的作用是什么?

4
几个月前,我在一个问题中问到Jetsam对内存使用的影响是否能够被观察到。我使用仪器回答了自己的问题,发现被Jetsam杀死的应用程序在终止之前和之后具有相同的内存占用量。
即使今天,在最近使用的应用程序列表中仍然可以看到被抛弃的应用程序。除非我自己删除它们,否则我不会获得任何性能提升,即使Jetsam已经将它们杀死。
如果是这样,Jetsam的目的是什么,它在做什么(除了杀死应用程序)?我没有看到任何好处。这是一个错误吗?
2个回答

10
即使在今天,我仍然可以在运行任务栏中看到被抛弃的应用程序。除非我自己将它们删除,否则即使Jetsam已经杀死它们,我也不会获得任何性能改进。
胡说八道。没有所谓的“运行任务栏”。你想的是最近使用的应用程序列表。应用程序出现在此栏中并不表示该应用程序仍在运行,并且从此栏中删除已杀死的应用程序对性能/内存没有影响。从此栏中删除应用程序唯一有益之处是如果应用程序仍在运行,则杀死该应用程序。
至于被Jetsam处理的应用程序,不足为奇的是,在重新启动后,应用程序将具有相同的内存占用量。应用程序通常被Jetsammed处理,因为它们被挂起,前台应用程序需要更多内存。应用程序被Jetsammed处理并不意味着该应用程序一定使用了过多的内存。

我可能用了错误的名称来称呼它。我指的是已被丢弃但未重新启动的应用程序。我的仪器测试显示,它们仍然具有运行时的相同占用空间。只有在我从“最近使用的应用程序”列表中删除它们后,它们的内存占用才会在仪器中消失。 - Jim
4
@Jim:你被欺骗了。一个死亡的应用程序实际上并没有使用资源。但是,如果没有其他应用需要它们,操作系统可能会保留内存页面,以便重新启动应用程序更快(因为不需要重新加载只读内容,例如文本段)。然而,如果系统上的任何其他应用需要内存,则可以重新分配给新应用程序,而无需任何性能惩罚。 - Lily Ballard
好的。我在这里学到了一些关于多任务处理和最近使用的应用程序列表(http://support.apple.com/kb/ht4211)的知识。但它仍然没有回答我的问题。如果我必须从最近使用的栏中删除应用程序才能看到性能提升,那么Jetsam的好处是什么?过去我不得不这样做来防止崩溃。 - Jim
2
@Jim:你说的“在我看到性能提升之前”是什么意思?一个死掉的应用就是一个死掉的应用,它不会占用任何资源或者造成任何性能影响。 - Lily Ballard

0
事实证明,当程序离开前台时,它会进入“暂停”状态。操作系统将保留该应用程序的内存,只要操作系统不需要将其用于其他用途,以便程序加载更快。
Jettison 的工作方式也相同:它释放内存...这与清除内存不同。
重要的区别在于,当内存被抛弃时,它保持不变,直到操作系统需要将其用于其他用途。清除也是一样...只是除了释放内存外,还擦除了其内容。

这是一个关于旧版iOS的老问题,所以我不知道是否还认为它重要。然而,重点在于Jetsam似乎正在主动抛弃挂起的程序,但执行程序仍然崩溃。使用工具检查内存后发现被抛弃的程序仍然在内存中。如果我手动杀死程序,执行程序就不会崩溃。同时,被杀死的程序不再占用内存空间。 - Jim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接