作为Project Svelte的一部分(格言:“你曾经尝试把Bugdroid变成紧身牛仔裤?!?”)的一部分,Android开发者文档有一个关于pipe理你的应用程序内存的页面。 它包含: 当用户导航到不同的应用程序,并且您的用户界面不再可见时,您应该释放只有您的用户界面使用的任何资源。 此时释放UI资源可以显着增加系统对caching进程的容量,这直接影响用户体验的质量。 和: TRIM_MEMORY_RUNNING_LOW :您的应用程序正在运行,但不被认为可以杀死,但是设备运行的内存要低得多,所以您应该释放未使用的资源来提高系统性能(这会直接影响您应用程序的性能)。 等等。 但是,这只有在“释放资源”以某种方式影响系统RAM时才有意义。 我的印象是,Dalvik虚拟机像Java虚拟机一样行事(或者可能是“做”了,如果改变的话,我不看)。 AFAIK,Java虚拟机分配系统RAM来增加堆大小,但从不释放 – 一旦分配,只要进程运行,它仍然是堆空间的一部分。 如果Dalvik虚拟机的行为方式相同,那么我看不到在我们的进程中增加未分配的堆空间的数量会如何影响整个系统的性能。 现在,为我们的进程释放堆空间是一件好事,也许这样做会降低我们将来需要更多系统RAM的可能性……但这不是文档所暗示的。 该文档指出“此时释放UI资源可以显着提高系统对caching进程的处理能力”; 它并没有说“目前释放UI资源没有直接影响,但将有助于减less未来应用程序的系统RAM占用空间”。 现在,指令告诉我们释放通过NDK分配的内存,这是有道理的,因为这发生在Dalvik堆外,并会影响系统RAM。 但是文档没有提供这种区别。 Dalvik虚拟机实际上释放分配的RAM回到系统,除了终止进程? 如果是,什么时候? 而且,考虑到垃圾收集器是非压缩的和非复制的,在较小程度上,这是如何完成的? 谢谢!
我有一个Android应用程序,我在2013年3月17日完全导出了一个签名版本。然后在2013年3月19日,我更新了Facebook SDK和Android SDKpipe理器,然后尝试再次导出我的应用程序的签名版本。 第一个错误。 现在,我一直在遇到这两个问题之一,我不能导出一个新的我的应用程序的签名版本重新上传谷歌Play商店。 转换为Dalvik格式失败,错误1 或者我的Android应用程序在导出时崩溃。 我已经尝试了很多我在网上find的解决scheme,但仍然没有运气。 我甚至删除并重新安装了Eclipse,ADT和Facebook SDK。 不过,我有问题。 Eclipse实际上是崩溃,这真的很奇怪。 有任何想法吗? 更新:所以,我不再得到“转换为Dalvik格式失败,错误1”任何更多的签名应用程序的导出。 Eclipse刚刚崩溃的签名应用程序的导出。 有任何想法吗? 我拥有所有最新的软件:eclipse,facebook sdk,android sdk等。我正在运行最新版本的Mac OS X.