android - 如何减少Android进程中/dev/ashmem/dalvik-main空间(区域空间)的大小?
问题描述
当我在不同的 Android 版本设备上运行同一个应用程序时,我发现在 Android 8.1 上/dev/ashmem/dalvik-main 空间(区域空间)的虚拟内存为 1GB(如下所示,大小:1048576 kB)。 0,太大了。但在 Android 7.1.2 上,大约为 0.375GB(2116kB + 194492kB + 196608kB)。如何在 Android 8.1.0 上减少它?
在安卓 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
在 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
解决方案
您无法在应用程序端调整它的大小。
内存映射为/dev/ashmem/dalvik-main
ART 运行时使用的堆,使用 java/kotlin 创建的所有对象都位于该堆中。由于 ART 运行时是在 zygote 中启动的,它是在 Android 启动时由 init 分叉的,并且所有应用程序在 zygote 中共享相同的艺术运行时,因此除非您是 Android 系统开发人员,否则您无法更改堆大小,然后您可以设置dalvik.vm.heapsize
和dalvik.vm.heapgrowthlimit
较小的尺寸。
推荐阅读
- sql - 我是 SQL Server 的新手。我创建了一个函数,它的作用类似于 charindex
- python - 如何从 Markdown 文件创建树?
- jquery - 在 Django 中使用 jQuery 和 AJAX 动态更新 Web API 结果
- twos-complement - 二进制补码加法。-48 - 23. 是否必须使用 8 位表示?
- react-native - Redux Saga action 异步操作调用了一次但触发了两次
- java - Maven 上的未知生命周期阶段
- amazon-web-services - 了解服务器/客户端路由:亚马逊(?)如何在没有重定向(或历史条目)的情况下重定向我的 SPA?
- c - 编译器或处理器在运行时如何区分静态局部变量?
- python - 如何查找特定频道的 forUsername 参数
- linux - 有没有不使用getppid就可以找到父进程的PID?