2010-06-20 56 views
5

我目前正在考慮開發一款處理使用Android OS的手機相機拍攝的 圖像的應用程序。 在我做出決定之前,我已經做了一些研究,發現有一些投訴關於Dalvik VM分配的內存限制 ,這似乎限制了需要操縱和處理的應用程序 圖片。 我應該記住哪些限制,如果我將不得不處理 示例3使用相機拍攝的照片,在我的過程中,應用 過濾器,變換和其他類型的數學運算?Dalvik內存分配 - 如何更改默認限制?

我想知道是否有可能改變由Dalvik虛擬機爲每個應用程序(此默認 爲16 MB的)分配的內存 的默認值,以任何方式,採用了Android 1.6操作系統。有沒有人看到 到這可以幫助我嗎?

我也看到了Android 2.1兼容性定義文檔 (可在這裏: http://static.googleusercontent.com/external_content/untrusted_dlcp/source.android.com/pt-PT//compatibility/android-2.1-cdd.pdf )在 ,它可以通過在Dalvik VM從16 MB改變分配內存爲24 MB,甚至更大金額,如果有必要,但 它沒有提到任何地方如何做到這一點。

如果有人查看過這些問題,並可以給我一些 幫助或提示,這將不勝感激。 謝謝。

+0

BTW:在Nexus One上的默認堆大小已經在每個應用 – 2010-06-20 09:41:00

回答

7

在通常的設備上,您無法更改應用程序的堆棧限制。它們由OEM進行硬編碼。如果您正在開發某個您完全控制的設備,則可以修改Dalvik啓動腳本以允許更多堆空間。

+0

24 MB你有如何的信息修改有關每個應用程序的默認堆大小更高的Dalvik啓動腳本?手機需要根植於此嗎?我正在開發一款應用程序,該應用程序將與設備一起捆綁/分發,在那裏我可以完全控制,但尚未紮根(尚)。 – 2010-06-20 09:39:47

+2

你需要有一個完整的電話訪問權限,修改啓動腳本意味着一個根的承諾。 萬一你有root權限 - 編輯init腳本(它在root/init中。RC) 並查找 「setprop ro.FOREGROUND_APP_MEM 1536」 – reflog 2010-06-20 11:29:14

+4

對於的Dalvik的託管堆限制,要編輯供應商/ [公司]/[產品] /system.prop和添加或更新「dalvik.vm.heapsize =24米」。這最終在/system/build.prop中,最終變成了-Xmx參數。 – fadden 2010-06-21 23:57:56

2

您可以通過更改avd的config.ini中的vm.heapSize項目來更改此項。例如,您可以在config.ini中編寫

vm.heapSize=64 

。如果沒有這樣的項目,您可以添加一個新項目。請注意,vm.heapSize可能會被皮膚覆蓋。皮膚路徑中有一個hardware.ini,它包含默認設置vm.heapSizehw.ramSize,這些設置可能會覆蓋您的值。要解決此問題,您可以設置

skin.path=720x1280 
skin.name=720x1280 

數字並不重要,它必須位於(寬度)x(高度)窗體中。

1

您可以通過亞行外殼setprop更改默認的全局堆大小,例如:

setprop dalvik.vm.heapsize 128m