ガツガツとメモリを食うアプリを作っていて、OutOfMemoryErrorが多発しているのに頭を抱えています。アプリの性質上とりあえず動けば良いものなので、System.gc()を連打してもあまり効果がありませんでした。
今日色々と調べていたところ、AndroidManifest.xmlで定義しているapplication要素の属性android:largeHeapに「true」を設定すると、「Motorola Xoom(MZ600)」で「256MB」までアプリケーションヒープの最大値を拡大させることができるのを知りました。
<application android:largeHeap="true" ...>
あまり参考にはならないけれど、マニュフェストファイル全体だと以下の通りです。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="jp.softbuild" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="10" /> <application android:largeHeap="true" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="jp.softbuild.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
今回のアプリは付け焼刃でなんとかするにしても、近いうちにAndroidのメモリ機構に関してはきちんと調べる必要がありそう。