当我在不同的安卓版本设备上运行同一个应用程序时,我发现在Android8.1.0上,/dev/ashmem/dalvik的虚拟内存是1GB (如您从下面看到的大小:1048576 kB),它太大了。但是在Android7.1.2上,它大约是0.375GB(2116 on + 194492kB + 196608kB)。我如何在Android8.1.0上减少它呢?
基于Android8.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 基于Android7.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 发布于 2020-10-27 08:19:14
你不能在你的应用程序端调整它的大小。
映射为/dev/ashmem/dalvik-main的内存是ART运行时使用的堆,使用java/kotlin创建的所有对象都位于该堆中。由于艺术运行时是以合子启动的,在android启动时由init分叉,而且所有应用程序都在合子中共享相同的艺术运行时,所以除非您是Android系统开发人员,否则不能更改堆大小,所以可以将dalvik.vm.heapsize和dalvik.vm.heapgrowthlimit设置为更小的大小。
https://stackoverflow.com/questions/56392781
复制相似问题