2012-05-11 110 views
0

是否可以为Android设备上运行的所有VM设置特定于应用程序的最大堆大小(dalvik.vm.heapsize属性)而不是使用相同的最大堆大小?我知道我可以通过修改设备的AndroidRuntime.cpp来设置一个新的dalvik heapsize,但是根据我读到的内容,因为Android只初始化一次虚拟机,然后分配后续虚拟机实例,所有运行在该设备上的虚拟机具有相同的dalvik .vm.heapsize属性。我是否正确理解这一点,有没有办法解决这个问题?为Android Dalvik VM设置应用程序特定的最大堆大小

+0

你工作的根?我不认为有任何简单的解决方案,除非你想搞乱达尔文的代码。 – kosa

+0

是的,我以root身份工作,可以修改达尔维克代码。我的想法是用fork + exec替换dalvik中的VM分支,这样我就可以重新初始化heapsize属性,但我不知道这会导致什么样的性能劣势。对此有何想法? – mozturk

回答

6

更改应用程序堆大小的唯一内置方法是在Manifest.xml中设置android:largeHeap="true"。这通常会将堆大小从48增加到128.

请记住,此方法仅适用于3.0+设备。

+0

感谢您的帮助。使用largeHeap设备分配的堆大小是否特定? 我针对的API级别10,所以我想这不是我的选择。 – mozturk

+0

是的堆大小最终由设备本身决定。 –

相关问题