2012-09-03 13 views
2

我試圖在我的Android應用程序序列化TreeMap這樣我就可以將其保存到一個SharedPreferences,在this StackOverflow Q&A建議。這是一個ArrayList,但我抓住了我的機會。重點是使用Apache Pig項目中的ObjectSerializer類將TreeMap序列化爲字符串,並將其保存爲共享首選項中的該數據類型。導入Apache的豬到Android項目導致「無法執行DEX:Java堆空間」的錯誤

但是,一旦我沒有使用Hadoop導入.jar,我就開始收到很多錯誤。當我在模擬器(我使用Eclipse)中運行我的應用程序時,IDE底部的狀態欄永遠不會超過「啓動[應用程序名稱] 100%...」消息。然後,很長一段時間後,

enter image description here

如果我再等一會兒,多個對話框彈出,在彼此的頂部:

enter image description here

我的問題是:

  1. 發生了什麼,爲什麼會發生這種情況?可能這是Apache Pig的一個bug?
  2. 有沒有其他庫可以用來序列化我的TreeMap?現在,我的解決方法是自己將其序列化,如this tutorial中所述,並將其保存在設備內部存儲器中與共享首選項分開的文件中。

回答

1

解決方法是不使用Apache P ig在Android應用程序 - 這是一個非常糟糕的舉動。 Apache Pig針對大數據項目進行了優化,並需要巨大的物理資源才能運行。如果您只需要一個類來序列化您的對象,則不值得導入它。

我只是從應用程序的引用庫中刪除Pig,並在Eclipse中再次正常啓動應用程序。

1

你可以嘗試打開您的eclipse.ini文件並更改以下參數:

--launcher.XXMaxPermSize 512米

-XX:MaxPermSize參數=256米

-Xms512m

-Xmx1024m

+1

我試過之前。我儘可能將-Xms和-Xmx增加到1024m,並且錯誤仍然存​​在。 –

相關問題