Java 更改一个应用程序在Android设备中允许使用的最大Ram量

Java 更改一个应用程序在Android设备中允许使用的最大Ram量,java,android,out-of-memory,Java,Android,Out Of Memory,场景: 应用程序需要在静态范围内存储大量数据。因为之前使用SQLite之后,为了完成整个场景,大约有20个数据库调用使用SELECT query(包括限制和介于两者之间),查询的总时间变得不可接受,因为此计算可能会重复多次,因此每次迭代调用20 DB,这使得应用程序行为不可接受 因此,团队决定的策略是在静态范围内提供数据,并直接从这些变量中选择数据作为索引,所有其他信息都可用于产生进一步的结果 问题: 我正在使用8Gb内存的设备,并在android studio中将堆大小增加到4G Runtim

场景:

应用程序需要在静态范围内存储大量数据。因为之前使用SQLite之后,为了完成整个场景,大约有20个数据库调用使用SELECT query(包括限制和介于两者之间),查询的总时间变得不可接受,因为此计算可能会重复多次,因此每次迭代调用20 DB,这使得应用程序行为不可接受

因此,团队决定的策略是在静态范围内提供数据,并直接从这些变量中选择数据作为索引,所有其他信息都可用于产生进一步的结果

问题:

我正在使用8Gb内存的设备,并在android studio中将堆大小增加到4G

Runtime.getRuntime().maxMemory()
为我提供了我的应用程序可以使用的内存(约604 Mb)的相关信息。因此,当应用程序开始复制变量时,随着变量大小的增长,当通过探查器调试的变量范围达到600 Mb左右时,应用程序会被OutOfMemory错误杀死

现在我想知道的是:

1) 。我有哪些选项可以提高Android系统中的Ram使用率。有什么方法可以提高我的应用程序的ram限制吗

2) 。更重要的是,是否有可能改变Android系统给每个应用程序的默认内存大小。。如果一个人试图将设备根目录化并以某种方式实现它,这是允许的。我已经在清单中使用了largeHeap标志


任何帮助/指导/指示都会很有帮助。

在清单中,您可以请求额外的堆,但它不能明确保证一定的大小:android:largeHeap=“true”是的,我忘了提到,但清单中已经添加了这一点。通过添加它,应用程序大小将增长到604mb。否则OutOfMemory会抛出大约200-250 mb的内存。在清单中,您可以请求额外的堆,但它不能明确保证一定的大小:android:largeHeap=“true”是的,我忘了提到,但这已经添加到清单中。通过添加它,应用程序大小将增长到604mb。否则,OutOfMemory将抛出大约200-250 mb。。