2013-10-23 49 views
1

我的Dalvik運行的一個實例:的Dalvik似乎並不被越來越多堆

/system/bin/dalvikvm ... -Xmx100m ... 

隨着MEMMAP看起來像:

b01f6000-b05b7000 rwxp 00000000 00:04 4635  /dev/ashmem/dalvik-heap (deleted) 
b05b7000-b65f6000 ---p 003c1000 00:04 4635  /dev/ashmem/dalvik-heap (deleted) 

但我發現了一噸的這些因爲GC消息正在運行的所有時間:

<dalvikvm> GC_CONCURRENT freed 1880K, 52% free 1882K/3843K, paused 5ms+9ms 
<dalvikvm> GC_CONCURRENT freed 1882K, 52% free 1881K/3843K, paused 5ms+9ms 
<dalvikvm> GC_CONCURRENT freed 1881K, 52% free 1881K/3843K, paused 6ms+9ms 
<dalvikvm> GC_CONCURRENT freed 1880K, 52% free 1882K/3843K, paused 5ms+8ms 
<dalvikvm> GC_CONCURRENT freed 1882K, 52% free 1881K/3843K, paused 6ms+9ms 
<dalvikvm> GC_CONCURRENT freed 1880K, 52% free 1882K/3843K, paused 5ms+9ms 
<dalvikvm> GC_CONCURRENT freed 1882K, 52% free 1881K/3843K, paused 6ms+9ms 

有足夠的可用內存:

MemFree:   496056 kB 

我想知道的是爲什麼不是堆越來越多,它似乎陷入了4MB ...?

順便說一句,我真的需要100MB,而實際上這只是一個小的起點......

感謝

回答

0

有關的Dalvik不知道,但一個正常的JVM可以通過-Xmx100M被配置爲吃100 MB。 IIUYC你有足夠的內存,所以不需要運行GC。 OTOH,GC工作效率高,因此不需要更多內存。由於手機相當受限制,Dalvik保守地運行並不讓我感到驚訝。

This question顯示如何增長堆。

3

Dalvik VM的政策是保持堆大小盡可能小。由於每收集一次就釋放1.8MB,所以它可能會很自豪。

如果您看到大量的這些消息,這隻表示您正在分配和丟棄大量內存,並且活動正常。你可以做的任何事情來減少內存流失都會對你有所幫助。