1

誰でもこれを理解できますか?ガベージ コレクションを 2 回実行しただけで、16MB の空き容量があります。では、なぜ 8MB の割り当てに失敗したのでしょうか?

09-06 19:08:36.335: V/MediaPlayerService(5439): [102] isPlaying: 0
09-06 19:08:36.421: D/dalvikvm(17483): GC_FOR_MALLOC freed 13K, 39% free 16709K/27079K, external 2357K/2773K, paused 139ms
09-06 19:08:36.421: I/dalvikvm-heap(17483): Forcing collection of SoftReferences for 8520570-byte allocation
09-06 19:08:36.522: D/dalvikvm(17483): GC_FOR_MALLOC freed <1K, 39% free 16708K/27079K, external 2357K/2773K, paused 95ms
09-06 19:08:36.522: E/dalvikvm-heap(17483): Out of memory on a 8520570-byte allocation.
09-06 19:08:36.522: I/dalvikvm(17483): "Thread-19" prio=5 tid=12 RUNNABLE
09-06 19:08:36.522: I/dalvikvm(17483):   | group="main" sCount=0 dsCount=0 obj=0x411da000 self=0x3863e8
09-06 19:08:36.522: I/dalvikvm(17483):   | sysTid=17496 nice=0 sched=0/0 cgrp=default handle=3695904
09-06 19:08:36.522: I/dalvikvm(17483):   | schedstat=( 8278991686 2222930914 7642 )
09-06 19:08:36.522: I/dalvikvm(17483):   at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:~91)
09-06 19:08:36.522: I/dalvikvm(17483):   at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:216)
09-06 19:08:36.522: I/dalvikvm(17483):   at org.jsoup.helper.DataUtil.readToByteBuffer(DataUtil.java:114)
09-06 19:08:36.522: I/dalvikvm(17483):   at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:437)
09-06 19:08:36.522: I/dalvikvm(17483):   at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:391)
09-06 19:08:36.522: I/dalvikvm(17483):   at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:157)
09-06 19:08:36.522: I/dalvikvm(17483):   at org.jsoup.helper.HttpConnection.get(HttpConnection.java:146)
4

1 に答える 1

3

2番目のログ行はあなたを混乱させるかもしれないと思います。言い回しは少し誤解を招きますが、空き容量は約10メガバイトしかないということは間違いありません。16709K/ 27079Kは約61.7%なので、16709Kはおそらく使用されるメモリの量であり、空き容量ではありません。

しかし、10メガバイトはまだ要求されている8メガバイトよりも大きいです。問題はおそらく、アプリが十分に長く実行されているため、メモリの断片化が目立つことです。つまり、合計で10メガバイトの空き容量がある可能性がありますが、すべて(または少なくとも十分に)アクティブに使用されているメモリの他のビットに分散しているため、アプリに提供する連続したスワスはありません。

于 2012-09-09T01:05:06.893 に答える