Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:如何降低堆大小?_Android_Memory_Memory Leaks_Heap Memory - Fatal编程技术网

Android:如何降低堆大小?

Android:如何降低堆大小?,android,memory,memory-leaks,heap-memory,Android,Memory,Memory Leaks,Heap Memory,问题是: 当我的应用程序第一次启动时,它会显示使用一些大图片的访客页面(我不能让图片变小)。这些图片占用了超过10M的内存,所以当时的堆大小超过了20M。那时候没关系。 然后我的应用程序使用了一个长时间运行的服务,该服务使用了大约10M的内存。但是当用户查看设置中的“正在运行的应用程序”时,他们会看到我的应用程序使用了20M的内存,而不是10M!这是因为我的堆大小始终为20M!如何降低堆大小??? 另外,我是中国人,所以我的英语很差,对此我很抱歉。如果你把你的UI和后台服务放在不同的进程中,你不

问题是:
当我的应用程序第一次启动时,它会显示使用一些大图片的访客页面(我不能让图片变小)。这些图片占用了超过10M的内存,所以当时的堆大小超过了20M。那时候没关系。
然后我的应用程序使用了一个长时间运行的服务,该服务使用了大约10M的内存。但是当用户查看设置中的“正在运行的应用程序”时,他们会看到我的应用程序使用了20M的内存,而不是10M!这是因为我的堆大小始终为20M!如何降低堆大小???

另外,我是中国人,所以我的英语很差,对此我很抱歉。

如果你把你的UI和后台服务放在不同的进程中,你不应该有这个问题。当然,转移到多进程体系结构是非常复杂的,但我已经尝试过了,并且发现它是有效的。

如果您确保垃圾收集器能够完成其工作,并且不再保留诸如图片之类的不再需要的项目,我想您的堆大小将再次缩小。但总的来说,我不会太担心堆的大小,只要您确信不会出现内存不足异常,并且有充分的理由使用大堆,例如显示许多大图片。@stefandbruijn我看了一下DDMS的“堆”。堆大小是20米,但分配的大小只有10米。这表明图片已经被破坏。然后我导致GC超过10次,堆大小仍然没有缩小。而且,我担心堆大小,因为中国有很多小内存手机(比如安卓4.0上的512米)。当用户看到我的程序使用20M时,他们会很生气。另一方面,我的竞争对手的一些其他程序只使用了4.0M!!!请帮帮我。。。