2

私はアンドロイド開発で本当に新しく、インターネットからいくつかのrss xmlニュースフィードを読み取る簡単なアプリを作成しました.アプリがxmlフィードを読み取るたびにGC_CONCURRENTが呼び出されるため、メモリ管理に少し関心があります.ddmsは私のヒープ サイズは 12,133Mb で、割り当てられた 11,549Mb (95.15% の使用率) がありました。メモリ エラーが発生していません。これまでアプリのアクティビティが 1 つしかなく、メモリ使用率がほぼ 100% であるため、心配しています。

アプリのメモリ使用量は正常ですか?

ps: 下手な英語でごめんなさい

04-09 17:02:58.731: D/InicioActivity(8998): Categoria: Mundo
04-09 17:02:58.762: D/dalvikvm(8998): null clazz in OP_INSTANCE_OF, single-stepping
04-09 17:02:59.255: D/dalvikvm(8998): GC_CONCURRENT freed 356K, 5% free 11879K/12423K, paused 3ms+7ms, total 30ms
04-09 17:02:59.458: D/InicioActivity(8998): Categoria: Brasil
04-09 17:02:59.505: D/dalvikvm(8998): GC_CONCURRENT freed 515K, 5% free 11831K/12423K,     paused 12ms+2ms, total 30ms
04-09 17:03:00.106: D/dalvikvm(8998): GC_CONCURRENT freed 465K, 5% free 11804K/12423K, paused 12ms+3ms, total 30ms
04-09 17:03:00.153: D/InicioActivity(8998): Categoria: Negócios
04-09 17:02:59.255: D/dalvikvm(8998): GC_CONCURRENT freed 356K, 5% free 11879K/12423K, paused 3ms+7ms, total 30ms
04-09 17:02:59.458: D/InicioActivity(8998): Categoria: Brasil
04-09 17:02:59.505: D/dalvikvm(8998): GC_CONCURRENT freed 515K, 5% free 11831K/12423K, paused 12ms+2ms, total 30ms
04-09 17:03:00.106: D/dalvikvm(8998): GC_CONCURRENT freed 465K, 5% free 11804K/12423K, paused 12ms+3ms, total 30ms
04-09 17:03:00.153: D/InicioActivity(8998): Categoria: Negócios
4

2 に答える 2

1

以前にいくつかの RSS フィード プログラムを実行したことがあります。あなたのコードの正確な詳細がわからないので、Google で見つけたコードのいくつかを実装したと仮定します。12 MB はたくさんありますが、これが RSS フィード自体と関係があるとはほとんど思いません。なぜなら、オンラインで見つけたコードのほとんどは非常によく書かれているからです (そうでない場合は、単に 12 MB にメモリを増やすとは思えません)。単純な xml パーサー)。

まず、いくつかの点を考慮してください。

  1. RSS リーダーの通常のメモリ使用量は約 4 MB です (少なくとも、すべてのパーサーで使用されていました)。

  2. プログラムのソース コードを確認し、追加のメモリを必要とするコード (ブラウザー、テクスチャ、画像、グラフィック エンジン) が他にないかどうかを確認します。

  3. 解析しようとしている xml のサイズは少なくとも 1MB ですか? もしそうなら、それを解析する他の方法を見つけることをお勧めします。
  4. あなたはここにいるのは初めてなので、質問するときは、これからサンプル コードを少し追加することをお勧めします。
于 2013-04-09T21:08:50.887 に答える
0

これは、現在割り当てられているヒープから 5% 解放されています。必要に応じて最大ヒープ サイズまで成長し、その後はOutOfMemoryErrors を取得します。

XML 解析に関してはXmlPullParser、Android フレームワークに付属しており、メモリ要件が軽いため、一般的なアドバイスは を使用することです。(DOM パーサーとは対照的に) イベント ベースのパーサーを使用した解析はより困難ですが、利点は、ドキュメントの完全な表現をメモリに保持しないことです。

于 2013-04-09T21:18:33.170 に答える