2011-01-23 54 views
3

據我所知,每款Android手機都將所有應用程序限制在16,24或32Mb的最大內存使用量。我剛剛看到人們討論應用地牢防禦者,顯然似乎利用256 Mb的RAM。Android應用程序如何使用> = 256Mb的RAM?

應用描述:「最低要求:512 MB RAM(256免費在運行時)」 http://www.appbrain.com/app/dungeon-defenders%3A-first-wave/com.trendy.ddapp

如何讓這個遊戲運行在一個機器人的引導(其中一個自定義ROM是需要得到的256Mb的RAM自由運行遊戲): http://www.forums.trendyent.com/showthread.php?447-How-to-play-Dungeon-Defenders-on-your- Motorola-Droid-Milestone-(requires-root)

這怎麼可能?有人知道這裏發生了什麼嗎?能夠訪問這麼多的內存將使我正在編寫的某些項目更容易編寫,所以我非常有興趣知道這個遊戲正在做什麼。

回答

1

在德國柏林的droidcon上,我聽說你無法增加應用程序在達爾維克端可以使用的RAM數量。你可以在本機端使用所有可用的內存,所以我猜這個命名的應用程序已經使用NDK在C中實現了大量內存。這是我知道的唯一可能的解決方案...

更新這不是會議,這是一個Google實驗室在我的大學與Reto Meier及其同事一起訪問。

+0

「您可以使用本機端的所有可用內存」。你確定嗎?例如,當您創建位圖對象時,Android會跟蹤您使用的「原生」內存的數量。如果這是真的,我不能通過編寫一個分配內存並將其傳回給Java的NDK函數來濫用它嗎?什麼是阻止應用程序使用所有可用內存並使系統不穩定? – rbcc 2011-01-23 15:20:38

+0

我從來沒有嘗試過(我不能寫c/C++代碼:/),所以這只是我聽到的。如果我沒有記錯的話,那不是在一次會議上,它是在我的大學的Google Lab活動中與Reto Meier和他的三個朋友在一起。所以我認爲這個信息應該是可靠的。如果有人能夠用一個例子來證明我會很高興看到它。 – WarrenFaith 2011-01-23 16:22:49

0

據我所知,Android能夠使用超過256MB的內存,因爲2.2
但是大多數手機顯示的比他們少,因爲總是有一些Ram爲系統保留。

+0

當運行Android 2.2的HTC Desire上超過24Mb時,出現「java.lang.OutOfMemoryError:bitmap size exceeded VM budget」錯誤。你有關於你的文章的更多信息的鏈接? – rbcc 2011-01-23 15:02:39

+0

我的意思是整個系統!我也不知道一個應用程序如何訪問這麼多的Ram。 – Beasly 2011-01-23 15:04:52

0

我爲我的應用使用了NDK。和我的測試設備,當我採取超過16mb的限制(宏達魔術,android 2.2)應用程序崩潰,系統拋出無效地址訪問異常。 所以不,你不能從本地或Java管理端使用你想要的所有內存。

我已閱讀有關使用不同的.so庫並在運行應用程序時加載它們,但我不知道它是如何工作的或它是否可行的解決方法。有什麼建議麼?

0

如果您不需要實時渲染圖像,答案很簡單,只需將圖像發送到您的服務器,並附帶一些圖像處理命令,將其渲染併發送回Android。如果您的應用程序需要> 256MB內存,那麼您將嚴重限制大量觀衆,這並不好。

相關問題