Java 达尔维克没有';他似乎没有长大

Java 达尔维克没有';他似乎没有长大,java,garbage-collection,heap,dalvik,heap-memory,Java,Garbage Collection,Heap,Dalvik,Heap Memory,我有一个运行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一直在运行,我收到了

我有一个运行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
我想知道的是,为什么堆没有越来越大,它似乎停留在4MB

顺便说一句,我真的需要100MB,实际上这只是一个小的起点


谢谢

我不知道Dalvik,但是一个普通的JVM可以通过
-Xmx100M
配置为消耗100MB。IIUYC您有足够的可用内存,因此无需运行GC。OTOH,GC工作效率很高,因此无需占用更多内存。由于手机是相当受限制的设备,所以Dalvik运行保守并不奇怪


显示如何增加堆。

Dalvik VM的策略是使堆大小尽可能小。由于它每次收集的数据都能释放出1.8MB的空间,所以它可能会为自己感到骄傲

如果您看到大量的这些消息,这只意味着您正在分配和丢弃大量内存,并且活动是正常的。你能做的任何减少内存流失的事情在这里都会有所帮助

MemFree:          496056 kB