Reputation: 1085
When I run the same app on different Android version devices, I found the virtual memory of /dev/ashmem/dalvik-main space (region space) is 1GB (as you can see from below, Size:1048576 kB) on Android 8.1.0, It's too large. But on Android 7.1.2, It's about 0.375GB(2116kB + 194492kB + 196608kB). How can i reduce it on Android 8.1.0?
On Android 8.1.0
S102X_32:/proc/30015 # cat smaps
12c00000-52c00000 rw-p 00000000 00:01 14821 /dev/ashmem/dalvik-main space (region space) (deleted)
Size: 1048576 kB
Rss: 664 kB
Pss: 550 kB
Shared_Clean: 0 kB
Shared_Dirty: 228 kB
Private_Clean: 0 kB
Private_Dirty: 436 kB
Referenced: 436 kB
Anonymous: 664 kB
AnonHugePages: 0 kB
Swap: 1980 kB
SwapPss: 990 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
VmFlags: rd wr mr mw me ac
On Android 7.1.2
translator:/proc/891 # cat smaps
12c00000-12e11000 ---p 00000000 00:01 19060 /dev/ashmem/dalvik-main space (deleted)
Size: 2116 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
SwapPss: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
VmFlags: mr mw me ac
12e11000-1ec00000 ---p 00211000 00:01 19060 /dev/ashmem/dalvik-main space (deleted)
Size: 194492 kB
Rss: 0 kB
Pss: 0 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 0 kB
Referenced: 0 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
Swap: 0 kB
SwapPss: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
VmFlags: mr mw me ac
32c00000-3ec00000 rw-p 00000000 00:01 19061 /dev/ashmem/dalvik-main space 1 (deleted)
Size: 196608 kB
Rss: 416 kB
Pss: 416 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 416 kB
Referenced: 416 kB
Anonymous: 416 kB
AnonHugePages: 0 kB
Swap: 0 kB
SwapPss: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
VmFlags: rd wr mr mw me ac
Upvotes: 1
Views: 2069
Reputation: 91
You can not resize it in your app side.
The memory mapped as /dev/ashmem/dalvik-main
is the heap used by ART runtime, and all objects created with java/kotlin are located in that heap. Since ART runtime is started in zygote which is forked by init when android boot, and all apps are share the same art runtime in zygote, so you can not changed the heap size unless you are an Android system developer, then you can set dalvik.vm.heapsize
and dalvik.vm.heapgrowthlimit
to a smaller size.
Upvotes: 2