5

私は私をワイルドに駆り立てる問題を抱えています。コードでGoogleMapAPI V2を使用しました。地図を移動すると、次のLogcat出力が表示されます(Nexus 7の場合)。

01-23 21:17:10.724: D/dalvikvm(5484): GC_FOR_ALLOC freed 4531K, 21% free 12911K/16312K, paused 29ms, total 29ms
01-23 21:17:10.724: I/dalvikvm-heap(5484): Grow heap (frag case) to 13.043MB for 285724-byte allocation
01-23 21:17:10.744: D/dalvikvm(5484): GC_FOR_ALLOC freed 200K, 22% free 12990K/16592K, paused 25ms, total 25ms
01-23 21:17:12.074: D/dalvikvm(5484): GC_FOR_ALLOC freed 1326K, 23% free 12893K/16592K, paused 30ms, total 31ms
01-23 21:18:04.854: D/dalvikvm(5484): Debugger has detached; object registry had 1 entries
01-23 21:18:07.374: D/dalvikvm(5484): GC_FOR_ALLOC freed 658K, 23% free 12904K/16592K, paused 27ms, total 27ms
01-23 21:18:07.384: I/dalvikvm-heap(5484): Grow heap (frag case) to 13.763MB for 1048592-byte allocation
01-23 21:18:07.404: D/dalvikvm(5484): GC_FOR_ALLOC freed 2K, 21% free 13925K/17620K, paused 27ms, total 27ms
01-23 21:18:07.714: D/dalvikvm(5484): GC_FOR_ALLOC freed 2127K, 26% free 13054K/17620K, paused 29ms, total 29ms
01-23 21:18:44.694: D/dalvikvm(5484): GC_CONCURRENT freed 1894K, 27% free 12970K/17620K, paused 4ms+5ms, total 56ms
01-23 21:18:46.684: D/dalvikvm(5484): GC_CONCURRENT freed 1738K, 27% free 12996K/17620K, paused 4ms+2ms, total 53ms
01-23 21:18:49.254: D/dalvikvm(5484): GC_CONCURRENT freed 1756K, 27% free 13014K/17620K, paused 2ms+8ms, total 77ms
01-23 21:18:56.864: I/dalvikvm(5484): Jit: resizing JitTable from 8192 to 16384
01-23 21:18:56.934: D/dalvikvm(5484): GC_CONCURRENT freed 1840K, 21% free 13010K/16312K, paused 2ms+4ms, total 49ms
01-23 21:18:59.434: D/dalvikvm(5484): GC_CONCURRENT freed 1779K, 21% free 12995K/16312K, paused 4ms+5ms, total 50ms
01-23 21:19:03.414: D/dalvikvm(5484): GC_CONCURRENT freed 1781K, 21% free 13007K/16312K, paused 2ms+3ms, total 48ms

ヒープはどんどん大きくなっていき、それについて何ができるのかわかりません。Webとstackoverflowを検索しましたが、役立つ答えはありませんでした。私はあなたの誰かがエラーを見つけることができることを願っています。私はAndroidを初めて使用するので、感謝します。

編集1:ヒープダンプ:

ここで、ヒープ割り当ての原因を確認できます。

EDIT2:MAT分析

容疑者1:

One instance of "maps.by.a" loaded by "dalvik.system.PathClassLoader @ 0x4480cfa8" occupies 1.002.352 (22,33%) bytes. The memory is accumulated in one instance of "maps.by.d" loaded by "dalvik.system.PathClassLoader @ 0x4480cfa8".

Keywords
maps.by.a
dalvik.system.PathClassLoader @ 0x4480cfa8
maps.by.d

容疑者2:

3.507 instances of "java.lang.Class", loaded by "<system class loader>" occupy 795.104 (17,72%) bytes. 

Biggest instances:
•class com.ibm.icu4jni.util.Resources$DefaultTimeZones @ 0x401fccc8 - 151.744 (3,38%) bytes. 
•class android.text.Html$HtmlParser @ 0x4016d288 - 126.592 (2,82%) bytes. 
•class org.apache.harmony.security.fortress.Services @ 0x40091188 - 51.456 (1,15%) bytes. 


Keywords
java.lang.Class

容疑者3:

8.168 instances of "java.lang.String", loaded by "<system class loader>" occupy 529.048 (11,79%) bytes. 

Keywords
java.lang.String
4

1 に答える 1

3

まず、ヒープが「成長し続ける」ことはありません。それは12893Kと13054Kの間でホバリングし、上昇と下降を繰り返し、13925Kに1つの異常なピークがあります。個人的には、そのログに心配するようなことは何もありません。

MATの出力に関して、これらが3つの上位の原因である場合、驚くべきことはありません。後者の2つは、「Android用のアプリを作成しています」と言っています。これは、Androidアプリには常に存在するためです。1つ目は、MapsV2にかなりずんぐりしたオブジェクトが1つあることを示しています。繰り返しますが、その出力には問題を示唆するものは何もありません。

于 2013-01-23T21:49:06.570 に答える