そのため、Android アプリケーションでしばらく苦労していました。私は Android プログラミングの初心者で、顧客向けにアプリケーションを作成しました。当時、Samsung の S2 や S3 などの新しいデバイス用にプログラムしました。ここで問題が発生しました: ガベージ コレクションです。メカニズムと GC を減らす方法に関するいくつかの投稿を読みましたが、役に立たないと思います。誰かがGCの世話をする方法を教えてくれることを願っています.
私のコードは次のことを行います: vTiger と呼ばれるオンライン CRM から大量のデータをダウンロードします。これは動的なシステムであるため、アプリケーションは (たとえば) ユーザー名とパスワードを含むユーザー テーブルだけでなく、リンクされた多くのデータを取得します。これを JSON オブジェクトに分割し、すべてのデータを次のようなループで使用できるように分割します。モジュールごとにすべてのレコードを取得します。これらのレコードを合わせると、約 5000 になります (現在、使用量が増え続けています)。
大量の情報があるため、情報を保持するために作成した単純なオブジェクトである ArrayList と ArrayList にすべての情報を格納します。データベースが過負荷になったので、オブジェクトを ArrayList に保持する代わりに、データベースに書き込むだけではなかったことを覚えています。そこで、これらすべてのオブジェクト (約 5000 ~ 10000) を ArrayLists に保存してから、SQLite データベースで Transactions を使用しました。この方法でうまくいきました。
しかし、エミュレーター/古いデバイスでは、多くの GC_concurrent ログを取得します。これは、コードでメモリ リークが発生したことを意味します。デバイスがすべてのオブジェクトをメモリに保持できないことは理解していますが、これをどのように処理しますか? GC が原因で、古いデバイスは「同期」機能を介して処理できません。たとえば、エミュレーターを数時間実行させましたが、同期の途中でほとんど動かなくなりました (非常に非常に遅くなりました)。
可能であれば、誰かが私にアドバイスを喜んでくれることを願っています。前もって感謝します!