には、私は、1のMoの何百もの文書が含まれている袋のデータベースを持っている〜100ミズーリ州これは、Androidコルドバアプリだと私は使用しています:PouchDb SQLiteのと、メモリ不足エラークエリ
- PouchDb 5.4.5
- コルドバ - プラグインのsqlite-2 1.0.4
各文書は、このようなものです:
{
data: '...', // Very long string of 1 Mo
filename: 'myFile', // Name of a file
index: 34 // An integer
}
私は」 data
重いプロパティを検索せずに、このdbに対してクエリを実行して、ファイル名とインデックスで索引付けされたすべてのドキュメントをリストしたいとします。
だから私はこのような眺めでした:
var designDoc = {
_id: '_design/getByFilenameAndIndex',
views: {}
};
mapFunction = function(doc){
emit(doc.filename + '/' + doc.index);
}
designDoc.views['getByFilenameAndIndex'] = { map: mapFunction.toString() };
myDb.put(designDoc);
をしかし、私は私のデシベルを照会しようとすると、次のように:
:myDb.query('getByFilenameAndIndex', {include_docs: false}).then(function(docsByFilenameAndIndex){
console.log(docsByFilenameAndIndex);
});
私は次のエラーを取得します
なぜこのエラーが発生していますか?私はまだ私のデバイス(Android 6)で利用できるRAMの900 Moを持っています。私はドキュメントを含めていません。私のdbが20 Mo未満の場合、正常に動作します。
SQLiteプラグインを使用する前に、40Moのdbで正常に動作していましたが、50Mo以上のデータベースが必要なため、SQLiteプラグインを使用しないと作業できません。
編集:私はこれを実行しようとしましたし、私もエラーが出ます:myDb.allDocs({include_docs: false});
ガイダンスを提供しています:http://stackoverflow.com/questions/32244851/androidjava-lang-outofmemoryerror-failed-to-allocate-a-23970828-byte-allocatio –