私は一連のビットマップを作成するアプリケーションを持っています。私はこれらのBitmapをSoftReferencesで保持していますので、メモリ不足を避けることができます。私は、SoftReferencesの収集を開始する前に、ヒープサイズを最大16MBまで拡大したいと思います。しかし、SoftReferenceは非常に熱心に収集されています。参照があまり熱心に収集されないように強制する必要はありますか?または手動で最大にヒープを拡張するには?可能であれば、16MBの割り当てでアプリケーションを起動する方法はありますか?AndroidヒープサイズとSoftReferences
3
A
答えて
3
現在のところ、SoftReferenceコレクションの動作を変更する方法はありません。
「手動でヒープを最大限に伸ばす」という意味がわかりません。
ビットマップクラスのインスタンスである場合(カスタムビットマップ実装とは対照的に)、ピクセルデータは実際にはネイティブヒープに格納されますが、厄介な「外部割り当て」アカウンティングトリックを使用するため、状況がさらに複雑になります。 (特に、記憶域はGCではなくファイナライザによって解放され、GCが完了した後にファイナライザを別のスレッドで実行する必要があります。メモリが足りなくなるまでビットマップを割り当てることができます。 OOMエラーが発生する前にメモリに保存されます)。
1
Andriodの既知の問題です。 VMがソフトリファレンスを収集するとき、VMはすべてを収集するか、まったく収集しませんが、「一部」を収集する必要がありますが、フリーヒープが十分にある場合は何も収集しません。
チェック:私は起動時に、私のアプリのために16メガバイトの割り当てを強制する方法を期待していた「最大ヒープを育てる」ことでhttp://code-gotcha.blogspot.com/2011/09/softreference.html
関連する問題
- 1. AndroidマニフェストVM最小ヒープサイズ
- 2. Android - デバイスごとの最大ヒープサイズの決定
- 3. ヒープサイズと名前ノードのHADOOP_NAMENODE_OPTS
- 4. Neo4jヒープサイズ
- 5. ソナーfindbugsヒープサイズ
- 6. Netbeansのヒープサイズjava
- 7. elasticsearch - max_map_count vsヒープサイズ
- 8. VisualVMとEclipseのヒープサイズの不一致MAT
- 9. アンドロイド - アクティビティごとのヒープサイズの増加
- 10. VMのサイズ(タスクマネージャ)とヒープサイズのJavaアプリケーション
- 11. .NET Committedブロックと予約済みヒープサイズ
- 12. JavaScriptのヒープサイズとクロムの増加
- 13. 弾性探索ヒープサイズ
- 14. さまざまなAndroid搭載デバイスのヒープサイズ
- 15. Androidアプリケーションのヒープサイズを増やす方法は?
- 16. Android:最大ヒープサイズに達した場合、アプリケーションを再起動
- 17. 私のヒープサイズを大きくするにはAndroidのメーカー
- 18. Intellijヒープサイズ、初期ヒープサイズが最大ヒープサイズよりも大きい値に設定される
- 19. 最大ヒープサイズは12ギガバイト
- 20. 最大Javaヒープサイズの変更
- 21. 無効な最大ヒープサイズ
- 22. 無効な初期ヒープサイズ:-Xms5g
- 23. ヒープサイズの使用率が50%を超えると、JVMヒープサイズを増やすのに役立ちますか?
- 24. Neo4jコミュニティ版でヒープサイズを増やすことができます
- 25. ヒープ解析後のJavaヒープダンプとヒープサイズが異なる
- 26. Netbeans 7.0.1と7.1間のJVMヒープサイズ割り当ての違いは?
- 27. Neo4jでJavaヒープサイズを増やす
- 28. ScalaのJVMヒープサイズを増やすには?
- 29. ヒープサイズを変更できませんAMD64
- 30. CentOS 7のJava最大ヒープサイズを制御
。これはjavaの "-Xmx16m"と同等です。 – ab11
これは、現在行われているヒープの最大サイズを制限します(Androidアプリフレームワークは、これをVMに正確に渡します)。最初のサイズを設定する "-Xms16m"と思っていましたか?その特定のオプションは外部割り当てのためにあなたが望むものを全くしません。隠されたメソッド(当初隠れていた、後に隠されていた)があります。これはdalvik.system.VMRuntime.setMinimumHeapSizeと呼ばれていました。これはおおよそあなたが望むことを意図していましたが、ヒントに過ぎず、将来的には消えてしまう可能性があります。 – fadden