- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图了解为 Android 中的每个进程分配了多少内存。据我了解,对于每个应用程序进程,都有一个单独的 Zygote 进程实例,Zygote 将 fork Dalvik VM。
我写了一个小的示例 java 应用程序,它只是循环打印“hello world”。后来通过ADB shell调用了Dalvik VM。现在,Procrank 命令显示,
PID Vss Rss Pss Uss cmdline 9374 7556K 7556K 3600K 3384K 达尔维克虚拟机
此处显示的 USS 为 3384k。
后来,我写了一个小的android程序,只有一个activity和TextView。现在procrank显示
PID Vss Rss Pss Uss cmdline 6540 37256K 35124K 4387K 3392K com.example.helloworld
我的问题是:
我对Dalvik的理解可能是错误的,它是如何被调用的,VM在每个进程中占用的内存。
欢迎任何见解。
谢谢。
最佳答案
好吧,我等了很长时间,期待专家回答这个问题。让我把我知道的分享给你。
第一个问题的答案:“如果每个应用程序进程都包含 Dalvik VM,它不会占用更多内存吗?”
Dalvik 堆由 zygote 预加载了类和数据(从 Android 2.2 开始加载了 1900 多个类)。当 zygote fork 启动一个 android 应用程序时,新的应用程序会得到这个堆的写时复制映射。正如 Dan Borstein 在下面所说,这有助于减少内存并缩短应用程序启动时间。
它在 Android 中用于分摊与所有 Activity VM 中的公共(public)库类关联的大量有效只读数据(技术上
可写但很少实际写入)的 RAM 占用空间过程。 1000 多个
类在启动时由系统预加载,每个类至少为自己消耗一点堆,包括
经常指向其他对象的星座。由预加载进程创建的堆与每个生成的 VM 进程共享写时复制(但实际上并没有写太多)。这为每个进程节省了
数百 kB 的脏不可分页 RAM,还有助于加快进程启动。
对于您的第 2 个问题:“我们如何知道 VM 占用的内存大小和 Java 进程占用的内存大小?”
我不明白“Java 进程占用的大小”是什么意思check有关 dalvik 中内存的清晰链接。
除了 procrank 我们还可以使用 adb shell dumpsys meminfo '你的应用程序包名称'
check this link有关 dumpsys 的更多信息。
关于android - Dalvik 虚拟机占用的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756619/
我一直在尝试弄清VMware是如何工作的(特别是在安装Linux时),我有两个问题: 当VMware遇到push cs这样的命令时会发生什么?特别是cs,因为其特权级别为0,而VMware以1特权级别
我正在尝试将 vim 配置为我的主要编码程序。我已经想出了如何编译单个文件,但是当我从 vim 中执行程序时,我不断收到 127 错误代码。我的盒子上有 a 别名为 ./a.out,但是当我从 vim
我正在尝试将 vim 配置为我的主要编码程序。我已经想出了如何编译单个文件,但是当我从 vim 中执行程序时,我不断收到 127 错误代码。我的盒子上有 a 别名为 ./a.out,但是当我从 vim
想知道有没有什么javascript虚拟机是你用过的或者有什么想法的! 我不是在谈论用于 chrome 的 V8 等浏览器的 javascript 引擎,我想在 linux 服务器机器上执行 java
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
我正在查找 Azure 中存储帐户的用途。因为我有一个问题。 我的帐户仅限于 1 个存储帐户,显然我已经在使用它,但我不知道为什么,我认为我不需要它。 我有一台带有云服务和存储帐户的虚拟机。我想创建另
Error - JVM - BlackBerry 9800 Simulator --------------------------------------- JVM: could not open
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
这是我的情况 我需要配置linux系统,因为路由器和客户端也在虚拟机中.. 系统A eth0:从isp获取ip(在VM ware中配置为Bidge) eth1: DEVICE=eth1 BOOTPRO
我知道 BEA 正在开发不需要底层操作系统的 LiquidVM,但想知道开源社区中是否有人正在开发类似的东西。 理想情况下,我想找到一个实现,其中 VM 直接由操作系统引导加载程序加载。 最佳答案 与
Linux系统下安装Vmware教程 由于项目需要,要在Linux下虚拟一个Windows,经过查找些资料,发现可一用VMware来实现,当然还有其他一些虚拟机可以使用如Win4lin,bochs
我正在使用虚拟机进行开发,但是每次我需要一个新的 VM 时,我都会复制文件并创建一个新服务器,但是我需要一个新的服务器名称才能将其添加到我们的网络中。 重命名服务器后,Sharepoint 站点有很多
如果 Cassandra 和代码在同一台机器上,则以下代码有效: using System; using Cassandra; namespace CassandraInsertTest {
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this qu
我正在将我的 Web 应用程序 try catch 异常错误跟踪消息转储到 Web 服务器上的 C:\Temp 文件夹但是当我的 web 应用程序位于 azure 上时,我希望在 azure VM c
我们为客户提供桌面 ERP 软件。该软件安装在 Azure 虚拟机中。每个公司都有自己的数据库文件。我需要优化性能,但我有些怀疑无法找到回应。例如,对于 2 个公司: 1-购买 2 台小型 VM(2
我试图将 Azure 上的虚拟机的网络号地址更改为与 Azure 池上的另一个虚拟机位于同一网络中,一旦我单击网卡上的“保存”,它就会卡住并无法通过远程桌面或任何其他方式。 请帮忙。 最佳答案 切勿尝
是否可以在 Azure 上设置虚拟机并使该虚拟机的同一实例对多个用户可见? 我们是 ISV。我们的用户分散在全局。我们希望使用 Azure 虚拟机来指导用户设置我们的软件。理想情况下,我们的帮助台将在
我使用 Ubuntu 镜像创建了一个虚拟机,并从 Azure 库预加载了 Discourse。自动设置完成后,我可以看到虚拟机正在运行,但我无法连接到它以远程查看计算机。我没有看到任何设置可以为我解决
我是一名优秀的程序员,十分优秀!