我有一个运行的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,实际上这只是一个很小的起点...
谢谢
最佳答案
Dalvik VM的策略是保持堆大小尽可能小。由于它每次收集都会释放1.8MB的空间,因此它可能会为自己感到骄傲。
如果您看到大量此类消息,则表示您正在分配和丢弃大量内存,并且活动正常。您可以采取任何减少内存流失的措施来解决问题。
关于java - 达尔维克似乎并没有增长,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19551945/