Android Studio设备内存限制 问题:

Android Studio设备内存限制 问题:,android,performance,android-studio,memory,Android,Performance,Android Studio,Memory,从Android Studio级别运行应用程序时,如何在设备上分配超过192MB的内存 说明: 我创建了一个简单的应用程序,它可以执行矩阵向量乘法来进行比较。我正在通过Android Studio在Nexus5上运行应用程序,但它很快就会耗尽内存。可以分配的矩阵的最大大小约为短整数类型的[9000]x[9000]。这会产生大约162MB的内存,所以不会太多,因为该设备有大约650MB的可用内存。然而,应用程序崩溃时OOM为192MB,这似乎是某种限制,因为Android Studio内存监视器只

从Android Studio级别运行应用程序时,如何在设备上分配超过192MB的内存

说明: 我创建了一个简单的应用程序,它可以执行矩阵向量乘法来进行比较。我正在通过Android Studio在Nexus5上运行应用程序,但它很快就会耗尽内存。可以分配的矩阵的最大大小约为短整数类型的[9000]x[9000]。这会产生大约162MB的内存,所以不会太多,因为该设备有大约650MB的可用内存。然而,应用程序崩溃时OOM为192MB,这似乎是某种限制,因为Android Studio内存监视器只显示这种高度的图表(如下图所示)

无限内存(最高设备限制级别)将是完美的。有机会做到吗


内存限制由设备而不是Android Studio设置。绕过此限制的唯一方法是在清单中添加
android:largeHeap=true
,但除非开发人员知道他们在做什么,否则这是非常不受欢迎的


有些设备的应用程序可用内存明显少于192MB,因此你甚至不能依赖192MB。

内存限制是由设备而不是Android Studio设置的。绕过此限制的唯一方法是在清单中添加
android:largeHeap=true
,但除非开发人员知道他们在做什么,否则这是非常不受欢迎的

有些设备的应用可用空间明显少于192MB,因此你甚至不能依赖192MB

这将提供大约162MB的内存,所以不会太多,因为该设备有大约650MB的可用内存

设备内存不是你的问题。你的问题是使用Dalvik/ART的Android应用程序——换句话说,使用Java编写的应用程序——有一个堆限制。该限值可能低至16MB,但现在更常见的是更高的限值

然而,应用程序崩溃,OOM为192MB

如果堆限制为192MB,那么您就拥有相当高端的设备;大多数设备的堆限制几乎没有这么高

无限内存(最高设备限制级别)将是完美的。有机会做到吗

学习C/C++,然后使用它编写向量代码。本机代码最多可分配到设备限制

或者,正如Redshirt所指出的,您可以在清单中使用内存分配更多内存。如果您以这种方式请求,设备制造商不需要为您的应用程序提供更多内存,但它可能会这样做。然而,这很可能不会接近设备内存限制

请注意,用户对行为不端的开发人员非常恼火,例如分配太多内存,损害用户对其他应用程序的使用

这将提供大约162MB的内存,所以不会太多,因为该设备有大约650MB的可用内存

设备内存不是你的问题。你的问题是使用Dalvik/ART的Android应用程序——换句话说,使用Java编写的应用程序——有一个堆限制。该限值可能低至16MB,但现在更常见的是更高的限值

然而,应用程序崩溃,OOM为192MB

如果堆限制为192MB,那么您就拥有相当高端的设备;大多数设备的堆限制几乎没有这么高

无限内存(最高设备限制级别)将是完美的。有机会做到吗

学习C/C++,然后使用它编写向量代码。本机代码最多可分配到设备限制

或者,正如Redshirt所指出的,您可以在清单中使用内存分配更多内存。如果您以这种方式请求,设备制造商不需要为您的应用程序提供更多内存,但它可能会这样做。然而,这很可能不会接近设备内存限制

请注意,用户对行为不端的开发人员非常恼火,例如分配太多内存,损害用户对其他应用程序的使用