問題タブ [android-memory]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - アクティビティの静的ランナブル
アクティビティで次のコードを変更しています。
に:
非静的変数を参照しているため、これは明らかに機能しません。
これも機能しません:
では、匿名の内部クラスの代わりに静的クラスを使用するように最初の例をどのように書き直したらよいでしょうか (メモリ リークの可能性を回避するため)。
android - Google Maps V2 および HTC Wildfire S: メモリ不足エラー
私のアプリは Google マップ V2 を使用しています。他のデバイスでは問題なく動作しますが、HTC Wildfire S でマップ アクティビティを開くと、数分間マップをナビゲートした後、次のエラーが発生します。
マップ上に数百のマーカーがありますが、これはメモリを飽和させる可能性がありますか?
android - finalize() から recycle() を呼び出すと、ネイティブ クラッシュでアプリがクラッシュする
バグhttps://code.google.com/p/android/issues/detail?id=8488 - Android バージョン < 3.0 で発生する (outOfMemoryError) に対処するために、リサイクルを呼び出すラッパー オブジェクトを作成しようとしています。 () その finalize() から。そうすれば、このビットマップがリサイクルされたことを確実に知ることができます。
PS - すべてのオブジェクトで finalize() を呼び出すために GB とファイナライザーを信頼できないことはわかっています。
これは私のコードです:
}
しかし、ネイティブ ライブラリがクラッシュし続けます - bitmap.recycle();" //SYGDEV heap dmalloc エラー" が発生し、その理由がわかりません。
ログのクラッシュは次のとおりです。
android - Android Looper は終了しますが、ファイル/パイプを開いたままにします
Looper
オブジェクトで実行されるスレッドが終了する (つまりLooper.quit()
、呼び出される) ときはいつでも、いくつかのファイル (通常は 3 つのファイル) が開いたままになることに気付きました。" adb shell ls /proc//fd | wc -lMessageQueue
"を実行すると、これが発生することがわかりますLooper
。finalize()
でメソッドを呼び出した場合にのみMessageQueue
、これらのファイルが解放されます。スレッドが終了した後も、ファイルは数時間開いたままになる場合があります。これは、これらのスレッドがシステム プロセスで実行されるときに問題を引き起こします。これは、既に多くの開いているファイルがあり、1024 ファイル境界を超えることができないためです。(ところで、呼び出しSystem.gc()
てもファイナライズしませんMessageQueue
)
とにかく(リフレクションを使用せずに)MessageQueue
ファイナライズメソッドを呼び出すことはできますか?開いているファイルの数が多い場合でも、GC がそれ自体を実行しないのは、Android のバグのように思えます。
ありがとう
android - Android-heap: AlertDialog の画像が巨大なヒープ メモリを占有し、解放しない
画像を含む特定のフラグメントがあります。画像をクリックすると、画像が拡大され、タイトル付きのダイアログに表示されます。
これはすべて正常に機能します。
DDMS を使用しているときに、ダイアログ ボックスを開いたときと解放されていないダイアログ ボックスを閉じたときに、ヒープ メモリが最大 4Mb 増加するのを見ました。
したがって、これを数回行うと、巨大なヒープメモリが必要になります。
基本的に、ダイアログを閉じるときにそのメモリを解放する方法を探していました。
android - アプリが使用できる RAM の最大量は?
Android オペレーティング システムのメモリ管理に関するこの質問に非常に興味があるので、そのトピックに関する非常に詳細な回答を期待しています。
私が知りたいこと:
- Android アプリケーション (システム アプリではない) が使用できるメモリの最大量(メガバイト単位/ RAM 全体に対するパーセンテージ) は?
- Android のバージョン間に違いはありますか?
- デバイスの製造元に関する違いはありますか?
最も重要な:
- アプリが実行時に使用できる RAM の量をシステムが決定する際に考慮されること/依存することは何ですか(アプリごとのメモリの最大値が静的な数値ではないことを前提としています)。
これまでに聞いたこと(2013年まで):
- 初期の Android デバイスのアプリあたりの上限は 16 MB でした
- その後、この上限は 24MB または 32MB に増加しました
私が非常に興味を持っている理由:
これらの制限は両方とも非常に低いです。
最近、デバイスの RAM をチェックするためにAndroid タスク マネージャーをダウンロードしました。私が気付いたのは、約 40 ~ 50 メガバイトの RAM を使用するアプリケーションがあることです。これは、前述の最大 RAM 使用量 (たとえば 32 MB) を明らかに超えています。では、Android はアプリが使用できる RAM の量をどのように決定するのでしょうか? アプリがその制限を超える可能性はありますか?
さらに、約 30 ~ 40 メガバイトを使用すると、 OutOfMemoryExceptionで一部のアプリがクラッシュする (システムによって強制終了される?) ことに気付きました。一方、クラッシュしたり強制終了されたりしないアプリは、しばらくすると (おそらくメモリ リークが原因で) 100 MB 以上を使用して携帯電話で実行されます。そのため、どれだけの RAM を節約できるかを判断する際には、明らかにアプリ自体にも依存します。これはどのように可能ですか?(768 MB RAM の HTC One S でテストを実施しました)
免責事項: 私は Android タスク マネージャー アプリとは一切関係ありません。