iOS 的 Unity 在后台占用大量内存
Unity for iOS takes a lot of memory in background
我正在编写 Unity iOS 应用程序,它在后台跟踪用户位置。当应用程序在前台工作时,它需要 50-60MB 的内存,而当它进入后台时,所有数据仍然保留在内存中。在这种情况下,应用程序会在几秒钟内因内存问题而终止。 Resources.UnloadUnusedAssets();
不会减少任何东西。
如何减少后台占用的内存?
这是理想的行为。当应用程序进入 BG iOS 没有开始释放内存时,这是应用程序的责任。
解决内存问题的最佳方法是对应用程序进行分析并查看内存的去向。在大多数情况下,纹理会占用大量内存,因此您可以考虑减小它们的大小或使用压缩。您可以做的另一件事是关闭纹理的 mipmapping,但这只会在您使用 2D 纹理时提供良好的视觉效果 UI,因为 3D 不是一个好主意。
Resources.UnloadUnusedAssets()
仅在有未使用的资产时才有效,如果您对此不做任何事情,那么它会有任何影响的微小变化。
您可以尝试的一个小窍门是创建一个空场景并在进入后台时过渡到该场景。场景可以有一个 2D 纹理,显示应用程序处于后台模式。然后你可以调用Resources.UnloadUnusedAssets()
,当然在前台回来的时候会转回主场景。
我正在编写 Unity iOS 应用程序,它在后台跟踪用户位置。当应用程序在前台工作时,它需要 50-60MB 的内存,而当它进入后台时,所有数据仍然保留在内存中。在这种情况下,应用程序会在几秒钟内因内存问题而终止。 Resources.UnloadUnusedAssets();
不会减少任何东西。
如何减少后台占用的内存?
这是理想的行为。当应用程序进入 BG iOS 没有开始释放内存时,这是应用程序的责任。
解决内存问题的最佳方法是对应用程序进行分析并查看内存的去向。在大多数情况下,纹理会占用大量内存,因此您可以考虑减小它们的大小或使用压缩。您可以做的另一件事是关闭纹理的 mipmapping,但这只会在您使用 2D 纹理时提供良好的视觉效果 UI,因为 3D 不是一个好主意。
Resources.UnloadUnusedAssets()
仅在有未使用的资产时才有效,如果您对此不做任何事情,那么它会有任何影响的微小变化。
您可以尝试的一个小窍门是创建一个空场景并在进入后台时过渡到该场景。场景可以有一个 2D 纹理,显示应用程序处于后台模式。然后你可以调用Resources.UnloadUnusedAssets()
,当然在前台回来的时候会转回主场景。