2

私は現在、いくつかの画像ファイルを分析して交差させるクールな Android アプリに取り組んでいます。残念ながら、それに関する詳細情報を公開することはできません。

とにかく、いくつかのデバイスでテストしましたが、いくつかのランダムな状況で、開いているファイルが多すぎる状態 (Errno 24) に達しました。これは、SD カードが内蔵されているデバイス (Samsung Galaxy S3 など) で発生しました。デバイスをルート化した後、sdcard が別のファイルシステム (FUSE と呼ばれる疑似ファイルシステム) としてマウントされているために発生する問題を特定できました。アプリによって開かれたファイルは、システムプロセス /system/bin によって実際に開かれます。 /SDカード/。

これにより、デバイス上のすべてのプロセスが 1024 個のファイル記述子(SD カードにあるファイル) のみに制限されます。1024 個のファイル記述子の制限は、Android のプロセスごとの最大オープン ファイルです。

たとえば、10 個のファイル (データベース ファイル、プロパティなど) を開くたびに 100 個のアプリがインストールされているデバイスを考えてみると、ほぼ限界に達しています。1024 ファイルの制限を超えると、デバイス全体が役に立たなくなります (アプリが動作しなくなるなど)。

★★ 私と同じようにこれが厄介だと思う場合は、この未解決の問題に投票してください★★ http://code.google.com/p/android/issues/detail?id=39002

4

1 に答える 1

0

これは確かに、いくつかの Bittorrent クライアントで私が抱えていた問題を説明しています。ファイルがダウンロードされ、外部 SD カードに存在するように見えますが、それらは使用できません。ダウンロードしたデータを強制的に再チェックすると、欠落または破損した部分が表示されます。

何週間もの間、私は Torrent の群れ (悪いピア?)、SD カード自体 (欠陥? 装着されていない?)、または KitKat (やや厄介な新しい制限とは関係ありません) のせいにしていました。

トレントを開くたびに、ファイルハンドルとネットワークソケットが各ピアに関連付けられているようです... 10個のトレントが実行され、それぞれ10個のピアがあります。問題なし。しかし、10 の torrent が開いていて、そのうちのいくつかは群が速ければ 50 のピアに接続する可能性があります。そして、それは私がSDカードで何か他のことをする前です!

Android Torrent クライアントのユーザーは、当然、外部 SD カードを使用したいと思うでしょう... - 大きなファイル - 別のファイルシステムにより、HTTP サーバーを使用してデータを他のコンピューターに転送する方が安全だと感じます - Linux ディストリビューションをダウンロードして、正しくポップすることができますSDカードスロットに!

私が考案した回避策は、アクティブな Torrent をメイン ストレージに保持し、書き込みが完了したら SD カードに転送することです。このようにして、SD カードに表示されるデータが破損するのを防ぎます。Flud (Google Play) は目立たず、信頼性が高く、完了した Torrent を新しい場所に移動するオプションがあります。

于 2016-01-23T19:42:31.290 に答える