0

I have created a new android Emulator based on Android 2.3.3 with 512MB RAM and 32/64/128/256/512 Heap Space.

But i still get the same problem all the time i try to install a package with adb install:

D/dalvikvm(  341): GC_CONCURRENT freed 429K, 41% free 3445K/5767K,
external 716K/1038K, paused 5ms+2ms

i get this twice per second and the emulator fed up all the system resources (CPU and RAM). So is there a bug somewhere in the heap allocation? Or do i need to set the value to something extraordinary high like 65535? This Logoutput does only seems to start when i try to install a package.

Edit: i will specify it a little bit more clearer: it doesnt matter what value i enter in the config.ini file for the vm.heapSize, in any case i get the same memory value of 5767K from the GC Message above. So this is truly a bug of the emulator! And again i didnt programmed anything, i just need my emulator up and running!

4

2 回答 2

0

它不是你得到的错误。android正在按照要求收集垃圾数据。请参阅链接以获取更多详细信息。

谢谢你。

于 2012-08-28T08:43:24.370 回答
0

我认为您的理解有些错误-5767K数量是堆的当前大小,而不是您正在更改的堆的最大大小。

Android GC 非常激进——也就是说,当创建新对象时,GC 通常总是更喜欢清理旧对象以释放空间,而不是增加堆大小,这就是您在此处看到的行为。无论您将最大堆设置为什么大小,您都无法达到您正在做的事情,因为在这种情况下,GC 总是能够释放旧内存,所以这就是它要做的事情。

尝试编写一个不断分配Bitmaps 的程序(并确保您保留对Bitmap您创建的所有 s 的引用,以便 GC 无法收集它们),然后查看您的堆有多大。

设备上的 GC 可能不那么激进,但可能会进行类似的调整。

于 2012-08-29T14:57:06.257 回答